3 回答

TA貢獻1862條經(jīng)驗 獲得超6個贊
如果n===stair.length
,您不想steps(n, row, stair)
在函數(shù)底部進行調(diào)用,如果您省略了return
.

TA貢獻1871條經(jīng)驗 獲得超13個贊
它中斷是因為您的代碼在 row === n 時終止。那條線是唯一改變行的地方。沒有它,代碼將產(chǎn)生如下輸出:
#
#
#
#
#
...
由于您在遞歸函數(shù)中處理此問題,因此 javascript 在它變得無限深之前會用完堆棧幀。

TA貢獻1829條經(jīng)驗 獲得超13個贊
有兩種方法可以考慮遞歸函數(shù)。首先是實際查看實際發(fā)生的情況——也就是說,查看一個示例并通過注意對函數(shù)的所有調(diào)用來“展開” steps
。這很安全,也很容易。
第二種方式更“神奇。在這種思維方式中,您不會考慮“大局”或考慮遞歸函數(shù)的多次調(diào)用。相反,您形成了一個連貫的想法,即您的遞歸函數(shù)應(yīng)該接受什么作為參數(shù)和它應(yīng)該返回什么。然后,您始終可以按照您認為它應(yīng)該工作的方式使用該函數(shù)來編寫遞歸函數(shù)的主體。這可能會更加令人困惑,但是一旦您“獲得”它,它就會非常優(yōu)雅并且是更有用的思維方式。
讓我們在這里使用第一種思維方式,因為它可能更容易。steps
你能告訴我按順序調(diào)用了多少次以及使用哪些參數(shù)?例如,第一個調(diào)用是steps(5, 0, '')
. 那么,第二次調(diào)用steps
會發(fā)生什么?按照這些步驟(呵呵),您應(yīng)該會看到問題所在。
添加回答
舉報