Fungsi Rekursif Kembali Tidak Ditakrifkan
Fungsi yang disediakan mengira cukai menggunakan rekursi, tetapi ia gagal menghentikan rekursi. Isu ini timbul daripada tidak mengembalikan nilai dalam cabang rekursif fungsi.
Dalam blok if (taxWage > minWage):
if (taxWage > minWage) { // calculates tax recursively calling two other functions difference() and taxStep() tax = tax + difference(taxWage) * taxStep(taxWage); var newSalary = taxWage - difference(taxWage); taxes(tax, newSalary); }
Kod mengira cukai secara rekursif tetapi tidak pulangkan nilai atau tetapkan cukai pulangan. Ketiadaan penyata pemulangan mengakibatkan nilai pemulangan yang tidak ditentukan.
Untuk membetulkannya, penyataan pemulangan boleh ditambah pada bahagian ini:
if (taxWage > minWage) { // calculates tax recursively calling two other functions difference() and taxStep() tax = tax + difference(taxWage) * taxStep(taxWage); var newSalary = taxWage - difference(taxWage); return taxes(tax, newSalary); }
Dengan pelarasan ini, fungsi itu kini akan mengembalikan nilai, menghalang rekursi daripada berterusan selama-lamanya.
Atas ialah kandungan terperinci Mengapa Fungsi Pengiraan Cukai Rekursif Saya Kembali Tidak Ditakrifkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!