解题思路:
这道题可以使用简单的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 人评分