Langkau ke kandungan
WANCODE
EN

Hentikan Loop Tanpa Henti

12 minitPemulaDebugging

Klik Calculate dan halaman beku seketika, kemudian console menunjukkan "Stopped a loop that ran for more than 1.5s". Mesej itu datang daripada loop guard WANCode — dalam tab pelayar biasa, bug ini akan membekukan halaman sehingga pelayar menawarkan untuk menghentikannya.

JavaScript
yearsToTarget(1000, 2000, 0.05)  // 15   (RM1000 at 5% a year)
yearsToTarget(100, 800, 1)       // 3    (doubles: 200, 400, 800)
yearsToTarget(5000, 2000, 0.05)  // 0    (already there)
yearsToTarget(1000, 2000, 0)     // -1   (0% interest never grows)

Hasil yang dijangka

Keperluan

  • Setiap tahun baki menjadi balance * (1 + rate). Kira bilangan tahun penuh sehingga ia sekurang-kurangnya target.
  • Jika balance sudah ≥ target, pulangkan 0.
  • Jika matlamat tidak akan tercapai (rate <= 0 atau balance <= 0), pulangkan -1 dan bukan loop selama-lamanya.

Baiki yearsToTarget(balance, target, rate) supaya loop-nya sentiasa tamat: pulangkan bilangan tahun untuk capai matlamat, 0 jika sudah tercapai, dan -1 jika baki tidak akan bertambah (rate atau baki ≤ 0).

Semakan

  • Loop tamat dengan jawapan yang betul
  • Memulangkan 0 apabila matlamat sudah tercapai
  • Memulangkan -1 dan bukan loop selama-lamanya
Pratonton

Output konsol daripada kod anda akan dipaparkan di sini.

Langkah 1 daripada 1