卖鸭子

                              ## 1.题目描述
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?

2.分析

根据题目我们可以很容易的看出:
经过第7个村子时,农夫手里的鸭子是2只;
经过第6个村子时,农夫手里的鸭子是((2+1)*2)=6只;
经过第5个村子时,农夫手里的鸭子是((6+1)*2)=14只;
经过第4个村子时,农夫手里的鸭子是((14+1)*2)=30只;

所以假设农夫在经过第n+1个村子时剩余m只鸭子,那么他在第n个村子还剩余((m+1)*2)只鸭子,卖掉了(m+2)只鸭子。

3.代码实现

</
#include <stdio.h>
int main()
{
int f(int n); //n为农夫经过的第n个村庄
f(1); //经过第一个村庄
return 0;
}
int f(int n)
{
int m; //m为经过第n个村庄时剩余的鸭子数
if(n==7)
{
m=2;
printf(“在经过第%d个村庄时还剩下%d只鸭子\n”,n,m);
}
else //每经过一个村庄卖掉剩余鸭子的一半加一个
{
m=(f(n+1)+1)*2; //则若经过第n+1个村庄时剩余鸭子m只,
//那么在第n个村庄的鸭子剩余数为(m+1)*2
printf(“经过第%d个村庄时还剩下%d只鸭子\t卖了%d只鸭子,\n”,
n,m,(m/2+1));
}
return m;
}
>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值