個人粗淺分析
個人的粗淺理解:
?第一天的桃子數=(第二天的桃子數+1)×2,循環到第10天,還剩1個返回值1也就是結束(也可以試試返回值100個隨便幾個,這個一就是代表到第十天還剩多少個),結束后才執行后面的return num,就是一直循環累加的num。如果不設置返回值他會一直計算無限循環,返回值就像一個數據參考,沒有他計算機無法計算這個公式的結果,所以才會無限循環。 printf("第%d天所剩桃子%d個\n", n, num);輸出為什么是反向的?因為我們的計算方式是遞推1-2-3-...到-10,找到返回值是1,然后才向主函數返回數值9-8-7...-1。也就是回推。
輸出的n,num就是計算過程。代表來回循環9次。
return num;代表的是就是“num = (getPeachNumber(n+1)+1)*2; ”一直到第十天的累加。
本身就是一個if...else...的語句,因為有了遞歸函數的存在,成為無線循環累加。遞歸更像是定義一個遞歸變量,設置一個結束點,計算結果。
2015-06-09
后面說的不對,主函數調用的是getpeachnumber(1),所以才會有所謂的累加,這不叫累加