2012-10-05 104 views
1

我有一个计算税款的函数。递归函数返回undefined

function taxes(tax, taxWage) 
{ 
    var minWage = firstTier; //defined as a global variable which is not 2299. 
    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); 
    } 
    else 
    { 
     returnTax = tax + taxWage * taxStep(taxWage); 
     return returnTax; 
    } 
} 

我看不出为什么它不会停止递归。

+0

什么是你的问题?而且,这段代码与你的问题的标题有什么关系? – jfriend00

+0

谢谢。编辑。 – raam86

+0

你说它递归,但没有代码在这里递归。 –

回答

7

在这个臂你的函数:

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); 
} 

你是不是从函数返回一个值或设置returnTax。当您不返回任何内容时,返回值为undefined

也许,你想这样:

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); 
} 
3

没有您的递归的错误:

taxes(tax, newSalary); 

if条件的计算结果为true,不返回任何东西。您需要更改到:

return taxes(tax, newSalary); 

你必须在else必要return声明。