程序世界


私信TA

用户名:FGP

访问量:4010

签 名:

等  级
排  名 5861
经  验 856
参赛次数 0
文章发表 7
年  龄 0
在职情况 学生
学  校 成都工业学院
专  业

  自我简介:

解题思路:

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

  评论区

小白一枚,求教大咖,return a == 1?1:(calculate(--a)+1)*2;能解释下么?这种表达式的用法和基本格式是什么?
2018-01-03 23:18:59 | |
  • «
  • 1
  • »