用递归实现。
巧克力情况可以看成当天吃2块或者当天吃1块两种。
递归退出条件是巧克力个数n位0或1的时候,即(2,0)或(1,1)两种情况,此时函数返回值为1。
#include <iostream>
using namespace std;
int ans(int n){ //计算方案数
if (n < 0) return 0;
else if (n == 0 || n == 1) return 1; //递归退出条件
else { //(n >= 2)
return ans(n-2) + ans(n-1); //巧克力块数>=2时,需要分为当天吃2块或者当天吃1块两种情况
}
}
int main() {
int n; //巧克力总块数
while (cin >> n) { //输入巧克力总块数
int a = ans(n); //调用函数
cout<<a<<endl; //输出方案数
}
}

京公网安备 11010502036488号