题目:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
题目分析:递归出口是经过第七个村子后还剩下两只鸭子,递归体是经过前一个村子的鸭子数除以2再减去1就是到达下一个村子的时候的鸭子数
由此看出要想求在第一个村子的鸭子数,必须从后往前推。
算法实现:
#include<stdio.h>
int fun(int n);//表示经过第n个村庄时的鸭子总数
int main()
{
printf("一共有%d只鸭子\n",fun(1));//在第一个村庄时求得鸭子总数
for(int i=1;i<=7;i++)
{
printf("经过第%d个村子是卖出了%d只鸭子\n",i,fun(i)/2+1);
printf("\n");
}
return 0;
}
int fun(int n)//定义求鸭子数的函数
{
if(n==7)
{
return 2;
}
else
{
return 2*(fun(n+1)+1);//返回鸭子数
}
}
递归
最新推荐文章于 2024-09-07 11:53:47 发布