亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

猴子摘桃問題?求大神解釋

猴子第一天摘下N個桃子,當時就吃了一半,還不過癮,就又多吃了一個。第二天又將剩下的桃子吃掉一半,又多吃了一個。以后每天都吃前一天剩下的一半零一個。到第10天在想吃的時候就剩一個桃子了,問第一天共摘下來多少個桃子?并反向打印每天所剩桃子數。



正在回答

3 回答

i=10

s=1

for i in range(10):

? ? i=s+1+1

? ? s=s+i

? ? print(i)

print(s)

? ?

Python?

0 回復 有任何疑惑可以回復我~
#1

qq_張_9

i=1
2017-10-31 回復 有任何疑惑可以回復我~

首先他是一個遞歸問題,什么是遞歸。遞歸就是函數調用自身。

分析這個問題,要知道第一天桃子的個數,就必須要知道第二天桃子的個數,可以使用一個遞歸函數

getPeachnumber(n)

其中當n為10的時候表示的是第十天剩余桃子的個數

這時候我們想要求得第九天的桃子數?? 題上說第n天的桃子數是n-1天桃子數的一半再減一

相當于是(第n+1天的桃子數+1)*2是第n天的桃子數

所以可構建出遞歸函數 num =(getPeachNumber(n+1)+1)*2;

再控制好結束條件,返回值,就OK了

3 回復 有任何疑惑可以回復我~

#include <stdio.h>
int getPeachNumber(n)
{
??? int num;??? //定義所剩桃子數
??? if(n==10)
??? {????? ?
?????? return 1;?????? //遞歸結束條件
??? }
??? else
??? {
??????? num =(getPeachNumber(n+1)+1)*2;?? //這里是不應該用遞歸呢?
??????? printf("第%d天所剩桃子%d個\n", n,num); //天數,所剩桃子個數
??? }
??? return num;
}
int main()
{
??? int num = getPeachNumber(1);
??? printf("猴子第一天摘了:%d個桃子。\n", num);
??? return 0;
}

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       927002    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

猴子摘桃問題?求大神解釋

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號