解题思路:
这道题可以使用简单的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语言代码)浏览:961 |
字符串输入输出函数 (Java代码)浏览:1385 |
C语言训练-求函数值 (C语言代码)浏览:912 |
C语言程序设计教程(第三版)课后习题9.4 (Java代码)浏览:1348 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:499 |
【魔板】 (C++代码)(时间超限,希望会的帮我改正一下)浏览:668 |
分糖果 (C语言代码)浏览:885 |
时间转换 (C语言代码)浏览:613 |
判定字符位置 (C语言代码)浏览:777 |
C语言训练-自守数问题 (C语言代码)浏览:713 |