递归

来源:互联网 发布:mysql 存储过程 参数 编辑:程序博客网 时间:2024/05/22 08:02
题目:一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?题目分析:递归出口是经过第七个村子后还剩下两只鸭子,递归体是经过前一个村子的鸭子数除以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);//返回鸭子数 }}

原创粉丝点击