10
1534
問題分析:
1,利用遞歸思想解決:
1 #include<stdio.h> 2 int eat(int N); 3 int main() 4 { 5 int N,num; 6 scanf("%d",&N); 7 printf("%d",eat(N)); 8 return 0; 9 } 10 int eat(int N) 11 { 12 if(N==1) return 1; 13 while(N!=1) 14 { 15 return (eat(N-1)+1)*2; 16 N-1; 17 } 18 }
將N理解爲天數,從前日後思考,每一天都是前一天+1後的兩倍,且第一天只有一個桃子且沒有吃,因此遞歸N-1次;spa
2,用for循環解code
1 include <stdio.h> 2 void main() 3 {int n,s=1,i;//n爲天數,s爲最後留下的 4 scanf(「%d」,&n); 5 for(i=0;i<n-1;i++) 6 s=(s+1)*2; 7 printf(「%d」,s); 8 }
思路和遞歸的思想相似,也是反向思惟,從第一天日後推,當天數少時遞歸和for循環效率應該差很少,但當天數很大時遞歸會出現錯誤,具體緣由我還沒理解,我推測是C語言最大值溢出了。blog