老師講的遞歸究竟應該怎么理解?
實例代碼中有這么一段
result?=?factorial(n-1)*n;
這個應該怎理解?當時
int?n?=?5;
那不是應該是?
result?=?factorial(5-1)*5;
(接上)最后結果等于20嗎?
請原諒,我并沒有學過數學遞歸
實例代碼中有這么一段
result?=?factorial(n-1)*n;
這個應該怎理解?當時
int?n?=?5;
那不是應該是?
result?=?factorial(5-1)*5;
(接上)最后結果等于20嗎?
請原諒,我并沒有學過數學遞歸
2016-07-04
舉報
2016-07-04
應該是(n-1)就用掉了一次再減一,又用掉了一次我是這么理解的
2016-07-10
result?=?factorial(5-1)*5;看作是result=(factorial(5-1))*(5);乘號左邊的factorial(5-1)是不是就是factorial(4),怎樣得到factorial(4)呢,這就又調用自定義函數 int?factorial(int n){ ? },參數n就變成4了,此時result?=?factorial(4-1)*4,同理乘號左邊因數factorial(4-1),即factorial(3)怎么算呢,就又調用自定義函數,參數n變為3,以此類推,實際上是先算出factorial(1),返回1,返回值帶入函數中算出factorial(2),再返回factorial(2)的值算出factorial(3),再返回直到算出factorial(5),這就是遞歸的思路。