一個階乘的程式碼被你弄得沒有辦法看。Python 檔名不要用數字開頭來命名。
從你的註釋來看,你是想搞清楚遞迴是怎麼執行或者怎麼計算的。
初學者只要這樣思考: 要計算n的階乘,只要先計算出n- 1的階乘, n * (n-1)! 就可以得出n的階乘,一直往前推,求n-1 的階乘,只要能計算出n-2 的階乘,就可以得到n-1的階乘,一直推到n= 0 的時候,0的階乘為1,返回1,上面是遞的過程,再一直歸回去,就可以得到結果。程式語言用棧去實現這個的,初學者不要陷入細節,不然學不好遞迴。
但你這樣的學習遞迴演算法,是不對的。
很多初學者學習遞迴時,容易陷入語法的細節不能自拔,非得整明白計算機是怎麼運算的。
初學者正確的學習方法:
1、要相信計算機能自己計算遞迴,暫時不需要搞清楚是怎麼去計算的。
可以將函式內部遞迴呼叫自己,假定為一個新的函式,幫助理解。
2、要抽象出遞迴公式,大問題分解為小問題,小問題一樣的求解。
3、要有退出(返回)條件。
一個階乘的程式碼被你弄得沒有辦法看。Python 檔名不要用數字開頭來命名。
從你的註釋來看,你是想搞清楚遞迴是怎麼執行或者怎麼計算的。
初學者只要這樣思考: 要計算n的階乘,只要先計算出n- 1的階乘, n * (n-1)! 就可以得出n的階乘,一直往前推,求n-1 的階乘,只要能計算出n-2 的階乘,就可以得到n-1的階乘,一直推到n= 0 的時候,0的階乘為1,返回1,上面是遞的過程,再一直歸回去,就可以得到結果。程式語言用棧去實現這個的,初學者不要陷入細節,不然學不好遞迴。
但你這樣的學習遞迴演算法,是不對的。
很多初學者學習遞迴時,容易陷入語法的細節不能自拔,非得整明白計算機是怎麼運算的。
初學者正確的學習方法:
1、要相信計算機能自己計算遞迴,暫時不需要搞清楚是怎麼去計算的。
可以將函式內部遞迴呼叫自己,假定為一個新的函式,幫助理解。
2、要抽象出遞迴公式,大問題分解為小問題,小問題一樣的求解。
3、要有退出(返回)條件。
黃哥:黃哥Python提醒:學習遞迴的正確方法。