0
0
已采纳
张易晨
新手光能
新手光能
分析: 我们可以算用n个空瓶子总共能换回多少瓶汽水。
如果没有空瓶子或者只有1个空瓶子,一瓶汽水都换不到。
如果有n只空瓶子(n>1),
- 可以换来n/2瓶汽水,剩n%2个空瓶子;
- 当换来的汽水喝完之后,就有了n/2+n%2个空瓶子,又可以拿去换汽水……
所以n只瓶子总共能换来的汽水数量 = n/2 + (n/2+n%2个空瓶子总共能换来的汽水数量)
所以:
1.把第六行改为if(n==0||n==1) return 0;
2.把第七行改为return n/2+f(n/2+n%2);
3.题目问的是能得到的汽水瓶数,所以输出改为cout<<n+f(n);
张易晨在2021-07-10 09:16:11追加了内容
你要是看不懂直接看最后三行也行
[doge]
0
薛子翔
初级守护
初级守护
出函数部分:
int f(int n){
如果n==0或n==1{
return 0;
}
return n/2+f(n%2+n/2);
}
递归。
0