Rumah > hujung hadapan web > tutorial js > Mengapa Fungsi Rekursif Kadang-kadang Kembali Tidak Ditakrifkan?

Mengapa Fungsi Rekursif Kadang-kadang Kembali Tidak Ditakrifkan?

DDD
Lepaskan: 2024-12-27 11:23:10
asal
183 orang telah melayarinya

Why Do Recursive Functions Sometimes Return Undefined?

Fungsi Rekursif Kembali Tidak Ditakrifkan

Kesukaran timbul apabila bekerja dengan fungsi rekursif: kadangkala ia boleh mengembalikan nilai yang tidak dijangka yang tidak ditentukan. Isu ini boleh dihadapi dalam senario seperti ini:

function calculateTaxes(tax, taxWage) {
  const minWage = firstTier;

  if (taxWage > minWage) {
    tax += calculateDifference(taxWage) * calculateTaxStep(taxWage);
    const newSalary = taxWage - calculateDifference(taxWage);
    calculateTaxes(tax, newSalary);
  } else {
    return tax + taxWage * calculateTaxStep(taxWage);
  }
}
Salin selepas log masuk

Di sini, jelas bahawa fungsi itu terus memanggil dirinya sendiri tanpa mengembalikan nilai dalam cawangan rekursif. Peninggalan ini mengakibatkan fungsi kembali tidak ditentukan.

Untuk menyelesaikan isu ini, adalah penting untuk memastikan bahawa panggilan rekursif mengembalikan nilai atau menetapkan pembolehubah pulangan. Kod berikut menunjukkan tingkah laku yang dimaksudkan:

function calculateTaxes(tax, taxWage) {
  const minWage = firstTier;

  if (taxWage > minWage) {
    tax += calculateDifference(taxWage) * calculateTaxStep(taxWage);
    const newSalary = taxWage - calculateDifference(taxWage);
    return calculateTaxes(tax, newSalary); 
  } else {
    return tax + taxWage * calculateTaxStep(taxWage);
  }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Fungsi Rekursif Kadang-kadang Kembali Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan