2013-10-26 197 views
0

我做了一個用分數關係減少兩個數的函數。它完美的工作,但問題是,它不會返回值。我嘗試了各種各樣的東西,例如聲明一個新變量然後返回它,但它不起作用。我還添加了一對console.logs來查看它是否停在某個地方,但沒有任何東西,它只是沒有返回任何東西。

這裏是我的代碼:JavaScript函數不返回任何東西

function reduceFraction(n, d) { 
    var numerator = n; 
    var denominator = d; 

    if (n % 7 === 0 && d % 7 === 0) { 
     numerator /= 7; 
     denominator /= 7; 
     console.log('Divided by 7'); 
     reduceFraction(numerator, denominator); 
    } else { 
     if (n % 5 === 0 && d % 5 === 0) { 
      numerator /= 5; 
      denominator /= 5; 
      console.log('Divided by 5'); 
      reduceFraction(numerator, denominator); 
     } else { 
      if (n % 3 === 0 && d % 3 === 0) { 
       numerator /= 3; 
       denominator /= 3; 
       console.log('Divided by 3'); 
       reduceFraction(numerator, denominator); 
      } else { 
       if (n % 2 === 0 && d % 2 === 0) { 
        numerator /= 2; 
        denominator /= 2; 
        console.log('Divided by 2'); 
        reduceFraction(numerator, denominator); 
       } else { 
        console.log('Was not divided by anything'); 
        var reduced = numerator + "/" + denominator; 
        return reduced; //console.log(numerator + "/" + denominator); logs 1/18 
       } 
      } 
     } 
    } 
} 
reduceFraction(3, 54); 

我不知道,如果嵌套了一堆if語句與它做任何事情,但是這是唯一的方法(我能想到的),現在,它會降低一小部分...在此先感謝。

回答

3

在遞歸函數,你需要的return太:

更換所有的

reduceFraction(numerator, denominator); 

這樣的:

return reduceFraction(numerator, denominator); 
0

你必須回報

function reduceFraction(n, d) { 
    var numerator = n; 
    var denominator = d; 

    if (n % 7 === 0 && d % 7 === 0) { 
     numerator /= 7; 
     denominator /= 7; 
     console.log('Divided by 7'); 
     return reduceFraction(numerator, denominator); 
    } else { 
     if (n % 5 === 0 && d % 5 === 0) { 
      numerator /= 5; 
      denominator /= 5; 
      console.log('Divided by 5'); 
      return reduceFraction(numerator, denominator); 
     } else { 
      if (n % 3 === 0 && d % 3 === 0) { 
       numerator /= 3; 
       denominator /= 3; 
       console.log('Divided by 3'); 
       return reduceFraction(numerator, denominator); 
      } else { 
       if (n % 2 === 0 && d % 2 === 0) { 
        numerator /= 2; 
        denominator /= 2; 
        console.log('Divided by 2'); 
        return reduceFraction(numerator, denominator); 
       } else { 
        console.log('Was not divided by anything'); 
        var reduced = numerator + "/" + denominator; 
        return reduced; //console.log(numerator + "/" + denominator); logs 1/18 
       } 
      } 
     } 
    } 
} 
return reduceFraction(3, 54); 
相關問題