c语言小明妈妈总共给小明买了多少块巧克力

如题所述

题目:小明妈妈给小明带回来一盒巧克力,(盒子里有n块巧克力,0<n>20)

小明每天可以吃一块巧克力或者两块巧克力。

假设小明每天都吃巧克力,那么小明共有多少种不同的吃巧克力的方案?

那么从题目中可以看出:

当n=1,小明一天吃一块,共一种方案;

当n=2,小明第一天吃一块,第二天吃一块,或者第一天吃两块,共有两种方案;

当n=3,小明第一天吃一块,剩下两块,或者第一天吃两块,剩下一块;

通过以上的规律我们不难得出;

块数 方案(种)

n=1 1

n=2 2

n=3 3

n=4 5

以此类推...当巧克力快数等于n时可以得出以下结论;

f(n)=f(n-1)+f(n-2)

那么我们就可以用递归函数来实现n块巧克力共有多少种方案,代码如下:

#include <stdio.h>

int chifa(int i,int j)
{
int ret=0;//共有多少种方案,初始值为0;
if(i==1)
ret=1;
else if(i==2)
ret=2;
else if(i==3)
ret=3;//通过1,2,3个巧克力方案来找出规律;
else
ret=chifa(i-1,ret)+chifa(i-2,ret);//当有n个巧克力时,用f(n)=f(n-1)+f(n-2)来实现总共的方案数;
//printf("%d",ret);
return ret;
}

int main()
{
int a,ret=0;
printf("请输入巧克力数:");//输入的巧克力数量 ;
scanf("%d",&a);
ret=chifa(a,ret);//调用子函数;
printf("共有 %d 种吃法:",ret);//打印共有多少种吃法;

return 0;
}

递归函数的调用(上题为例),当输入一个n(巧克力数时),通过调用进入子函数,当n>3时,无法输出结果ret,那么他就会一直通过结论的式子减少巧克力数(就是一直调用这个子函数),知道n等于3,2,1时,得到了一个结果,然后它就会开始向上累加,从而得到第n个巧克力时共有多少种方案。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜