题目:
1、递归实现斐波那契数列,1,1,2,3,5,8,13,21,34,55,89,144……
2、一个人赶着鸭子去每个村庄卖,每经过一个 村子卖去所赶鸭子的一半又一只。 这样他经过了 七个村子后还剩 两只鸭子,问问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭子?
代码:
#include<stdio.h>
int f(int n);
int duck(int n);
int main(int argc, const char *argv[])
{
/****题目一****/
#if 0
int num;
scanf("%d",&num);
for(int i=1;i<=num;i++)printf("%d ",f(i));
#endif
/****题目二****/
#if 1
printf("一共有%d个鸭子\n",duck(7));
for(int i=7;i>0;i--)printf("第%d个村子卖了%d只\n",8-i,duck(i)-duck(i-1));
#endif
return 0;
}
int f(int n)
{
if (n==1||n==2)return 1;
return f(n-1)+f(n-2);
}
int duck(int n)
{
if(n==0)return 2;
return (duck(n-1)+1)*2;
}
运行结果:
结果一:
ubuntu@ubuntu:~$ gcc day7.c -o day7
ubuntu@ubuntu:~$ ./day7
20
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
结果二:
ubuntu@ubuntu:~$ gcc day7.c -o day7
ubuntu@ubuntu:~$ ./day7
一共有510个鸭子
第1个村子卖了256只
第2个村子卖了128只
第3个村子卖了64只
第4个村子卖了32只
第5个村子卖了16只
第6个村子卖了8只
第7个村子卖了4只