dic
递归基础练习题:
1.
求
1+2+3+……+n
的值
//a+(a+1)+
…
+b
int sum(int a,int b)
{
if(b==a) return a;
return a+sum(a+1,b);
}
2
.
求
1*2*3*……*n
的值
a*(a+1)*(a+2)
…
*b
cheng(int begin,int end)
{
if(begin==end) return begin;
return begin * cheng(begin+1,end);
}
5
.
小猴子第一天摘下若干桃子
,
当即吃掉一半
,
又多吃一个
.
第二天早上又将剩下的桃子吃一
半
,
又多吃一个
.
以后每天早上吃前一天剩下的一半另一个
.
到第
10
天早上猴子想再吃时发现
,
只剩下一个桃子了
.
问第一天猴子共摘多少个桃子?
fruit(int begin,int times)
{
if(times==10) return begin;
return fruit((begin+1)*2,times+1);
}
7
.
一个人赶着鸭子去每个村庄卖,每经过一个村子卖去所赶鸭子的一半又一只。这样他经
过了七个村子后还剩两只鸭子,问他出发时共赶多少只鸭子?经过每个村子卖出多少只鸭
子?
duck(int begin,int times)
{
if(times==7) return begin;
return duck((begin+1)*2,times+1);
}
8.
著名的菲波拉契
(Fibonacci)
数列,其第一项为
0
,第二项为
1
,从第三项开始,其每一项
都是前两项的和。编程求出该数列前
N
项数据。
int fbi(int i)
{
if(i<2)
{
if(i == 0) return 0;
else return 1;
}
return fbi(i-1) +fbi(i-2);
}
9
.
求两个数的最大公约数。