用递归实现。
巧克力情况可以看成当天吃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; //输出方案数 } }