吃糖果
题目链接:http://codeup.cn/problem.php?cid=100000583&pid=0
思路
- 就是简单的递归
- 两种方法:当n只糖果时,可以分为
- 吃一只糖果,剩下n-1只糖果
- 或者吃两只糖果,剩下n-2只糖果
- 考虑边界问题,n为1和 n为2的情况,因为对于n-1来说,一直减下去,可以取到1和2,但是对于n-2来说,若是n为奇数,n取不到2,n为偶数,n取不到1,所以两种边界情况都要写上
代码
#include <iostream>
using namespace std;
int ways(int n) {
if (n==1)
return 1;
if (n==2)
return 2;
return ways(n-1)+ways(n-2);
}
int main() {
int N;
while (scanf("%d",&N)!=EOF) {
printf("%d\n",ways(N));
}
return 0;
}
注意,在codeup中输出超限的情况可能是while (scanf("%d",&N))忘了写!=EOF,应为while (scanf("%d",&N)!=EOF)