解题思路:
这道题可以使用简单的for循环反向推导,设总数为n,则每天都是n/2-1,(n/2-1)/2-1.....反向推回去就是sum=(sum+1)*2,通过这种方式就可以很快得到答案;但是与此同时这道题还是一个经典的递归问题,使用递归也可以很快得到答案,这是因为前面的数的整体和后面的数有直接的关联,递归的结束条件是a == 1。
注意事项:
参考代码:
#include<stdio.h>
int main()
{//简单的方法
int a;
int i, sum = 1;
scanf("%d",&a);
for(i = 1;i<a;i++)
sum=(sum+1)*2;
printf("%d",sum);
return 0;
}
//使用递归的方法
#include<stdio.h>
int calculate(int a)
{
return a == 1?1:(calculate(--a)+1)*2;
}
int main()
{
int a;
scanf("%d",&a);
printf("%d",calculate(a));
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:561 |
九宫重排 (C++代码)浏览:1378 |
C语言考试练习题_排列 (C语言代码)浏览:750 |
C语言程序设计教程(第三版)课后习题6.8 (C语言代码)浏览:790 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:1244 |
【排队买票】 (C语言代码)浏览:927 |
WU-输出正反三角形 (C++代码)浏览:1046 |
WU-小九九 (C++代码)浏览:1696 |
1009题解浏览:781 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:583 |