iT邦幫忙

1

js 階乘 用法

想請問一個階層問題code如下
https://ithelp.ithome.com.tw/upload/images/20201219/20133652A5OYUNGbp9.jpg

印出來的結果如下
https://ithelp.ithome.com.tw/upload/images/20201219/20133652PK5BfE7Tkj.jpg

想請問為什麼n是從5開始帶入,印出來卻是從1開始?是因為true/false的關係嗎?
但如果true才執行 為什麼後面n=2~5又繼續執行,煩請各位大大解答,謝謝

2
rogeryao
iT邦大師 1 級 ‧ 2020-12-19 14:20:39
最佳解答

var x=(n == 1 ? n : n * factorial(n - 1));
當 n=1 時終止呼叫 factorial ,才會繼續以下程式
console.log(n + ">" + x);
return x

請參閱 : 在 JavaScript 遞歸、反覆運算並尾呼叫

2

我用比較白話的說法。

因為你是 54321 的丟進去。依後來先吐的道理。自然就是從 12345吐回了。

這樣是否能明白??

0
鬼王很慘
iT邦新手 3 級 ‧ 2020-12-22 13:20:45

如果不懂就不要偷懶,把運行過程一行一行寫下來

一) f(5)
一) 印出 5
一) x = 5 * f(4)
二) 印出 4
二) x = 4 * f(3)
三) 印出 3
三) x = 3 * f(2)
四) 印出 2
四) x = 2 * f(1)
五) 印出 1
五) x = 1
五) 印出 1>1
五) 返回 1
四) 印出2>2
四) 返回2
三) 印出3>6
三) 返回6
二) 印出4>24
二) 返回24
一) 印出5>120
一) 返回120

遞迴是一層一層進入再一層一層出來。括弧前是層數。

我要發表回答

立即登入回答