課程
/后端開發
/C
/C語言入門
?num = (getPeachNumber(n+1)+1)*2;?
2016-05-24
源自:C語言入門 5-8
正在回答
讓我們來看看它是如何被調用的吧,
首先理解:int getPeachNumber(n);?? //定義以n為形參的自定義函數
然后理解:getPeachNumber(n+1);?//調用自定義函數,并將n+1的值賦給形參n,即求n=n+1時此函數的返回值
最后理解:num = (getPeachNumber(n+1)+1)*2;???????????????
從n=1開始 因為不等于10所以將1代入上式即:
n==1時執行到num=(getPeachNumber(1+1)+1)*2???????此時()內為2,即開始執行n==2時的遞歸函數
n==2時 執行到num=(getPeachNumber(2+1)+1)*2???? 此時()內為3,即開始執行n==3時的遞歸函數
n==3時 執行到num=(getPeachNumber(3+1)+1)*2??? ?此時()內為4,即開始執行n==4時的遞歸函數
n==4時 執行到num=(getPeachNumber(4+1)+1)*2???? 此時()內為5,即開始執行n==5時的遞歸函數
n==5時 執行到num=(getPeachNumber(5+1)+1)*2???? 此時()內為6,即開始執行n==6時的遞歸函數
n==6時 執行到num=(getPeachNumber(6+1)+1)*2???? 此時()內為7,即開始執行n==7時的遞歸函數
n==7時 執行到num=(getPeachNumber(7+1)+1)*2???? 此時()內為8,即開始執行n==8時的遞歸函數
n==8時 執行到num=(getPeachNumber(8+1)+1)*2???? 此時()內為9,即開始執行n==9時的遞歸函數
n==9時 執行到num=(getPeachNumber(9+1)+1)*2???? 此時()內為10,即開始執行n==10時的遞歸函數
n==10,時,即執行return 1; 結束遞歸并返回值為1,即:getPeachNumber(9+1)=1,因為第10層遞歸結束了,所以要計算每層遞歸函數的返回值,以及后面的語句:printf("第%d天所剩桃子%d個\n", n, num);
?返回結果:
因為運行到n==10時我們得出getPeachNumber(9+1)=1,所以當n==9時就可以算出來了:
n==9時,num=(getPeachNumber(9+1)+1)*2?——>num=(1+1)*2?=4
??????????????? 輸出:第9天所剩桃子4個 n==8時,num=(getPeachNumber(8+1)+1)*2?——>num=(4+1)*2?=10
????????????????輸出:第8天所剩桃子10個 以此類推:
第7天所剩桃子22個 第6天所剩桃子46個 第5天所剩桃子94個 第4天所剩桃子190個 第3天所剩桃子382個 第2天所剩桃子766個 第1天所剩桃子1534個 最后再執行:
printf("猴子第一天摘了:%d個桃子。\n", num);
猴子第一天摘了:1534個桃子。
?
慕仰9056393 提問者
因為字號的css屬性是可以繼承的,所以給body設置字段就相當于給段落設置字號,不過為了嚴謹些,我們還是完善一下好。加這段代碼試一下:setIconEnable(menu,true);
感謝感謝
比如第九天 剩4個桃子 第十天 剩一個桃子 第九天的就是getPeachNumber(9),第十天的就是getPeachNumber(10),因為是先吃一半 然后再吃一個 所以第九天的數量就是第十天的先加上先吃掉的那個1 然后再乘以二 遞歸函數調用自身 從10一直到第一天?
舉報
C語言入門視頻教程,帶你進入編程世界的必修課-C語言
2 回答不懂這段代碼是什么意思
3 回答請問這段代碼是什么意思,我看不懂
2 回答看不懂這個題的意思
2 回答還是不懂什么意思
2 回答這段內容什么意思,不懂啊
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-06-07
讓我們來看看它是如何被調用的吧,
首先理解:int getPeachNumber(n);?? //定義以n為形參的自定義函數
然后理解:getPeachNumber(n+1);?//調用自定義函數,并將n+1的值賦給形參n,即求n=n+1時此函數的返回值
最后理解:num = (getPeachNumber(n+1)+1)*2;???????????????
從n=1開始 因為不等于10所以將1代入上式即:
n==1時執行到num=(getPeachNumber(1+1)+1)*2???????此時()內為2,即開始執行n==2時的遞歸函數
n==2時 執行到num=(getPeachNumber(2+1)+1)*2???? 此時()內為3,即開始執行n==3時的遞歸函數
n==3時 執行到num=(getPeachNumber(3+1)+1)*2??? ?此時()內為4,即開始執行n==4時的遞歸函數
n==4時 執行到num=(getPeachNumber(4+1)+1)*2???? 此時()內為5,即開始執行n==5時的遞歸函數
n==5時 執行到num=(getPeachNumber(5+1)+1)*2???? 此時()內為6,即開始執行n==6時的遞歸函數
n==6時 執行到num=(getPeachNumber(6+1)+1)*2???? 此時()內為7,即開始執行n==7時的遞歸函數
n==7時 執行到num=(getPeachNumber(7+1)+1)*2???? 此時()內為8,即開始執行n==8時的遞歸函數
n==8時 執行到num=(getPeachNumber(8+1)+1)*2???? 此時()內為9,即開始執行n==9時的遞歸函數
n==9時 執行到num=(getPeachNumber(9+1)+1)*2???? 此時()內為10,即開始執行n==10時的遞歸函數
n==10,時,即執行return 1; 結束遞歸并返回值為1,即:getPeachNumber(9+1)=1,因為第10層遞歸結束了,所以要計算每層遞歸函數的返回值,以及后面的語句:printf("第%d天所剩桃子%d個\n", n, num);
?返回結果:
因為運行到n==10時我們得出getPeachNumber(9+1)=1,所以當n==9時就可以算出來了:
n==9時,num=(getPeachNumber(9+1)+1)*2?——>num=(1+1)*2?=4
??????????????? 輸出:第9天所剩桃子4個
n==8時,num=(getPeachNumber(8+1)+1)*2?——>num=(4+1)*2?=10
????????????????輸出:第8天所剩桃子10個
以此類推:
第7天所剩桃子22個
第6天所剩桃子46個
第5天所剩桃子94個
第4天所剩桃子190個
第3天所剩桃子382個
第2天所剩桃子766個
第1天所剩桃子1534個
最后再執行:
printf("猴子第一天摘了:%d個桃子。\n", num);
猴子第一天摘了:1534個桃子。
?
?
2022-03-23
因為字號的css屬性是可以繼承的,所以給body設置字段就相當于給段落設置字號,不過為了嚴謹些,我們還是完善一下好。加這段代碼試一下:setIconEnable(menu,true);
2016-10-06
感謝感謝
2016-05-25
比如第九天 剩4個桃子 第十天 剩一個桃子 第九天的就是getPeachNumber(9),第十天的就是getPeachNumber(10),因為是先吃一半 然后再吃一個 所以第九天的數量就是第十天的先加上先吃掉的那個1 然后再乘以二 遞歸函數調用自身 從10一直到第一天?