初步了解递归函数

递归是指在函数体中直接或间接的调用自身。
递归必须有终止条件,否则,将会出现无限递归。
无限递归会耗尽内存,导致程序崩溃,必须避免。
1.斐波拉契数列是经典的递归案例,斐波拉契数列的第一位和第二位值为1,第三位是第一位与第二位的值相加,第四位是第二位与第三位的值相加......以此类推。
如下:
1、1、2、3、5、8、13......
如果要求斐波拉契数列第n位的值,用f(n)表示数列第n位的值,其中
f(1)=1,f(2)=1,
f(n)=f(n-1)+f(n-2),
为了求斐波拉契数列第n位的值,我们使用递归函数实现:
static int f(int n)
{
if(n==1||n==2)
return 1;
else
return f(n-1)+f(n-2);
}
这里有终止条件f(1)=f(2)=1,否则出现f(1)=f(0)+f(-1),f(0)=f(-1)+f(-2)......
就陷入了死循环,这也是使用递归函数需要注意的地方。

2.一个数n的阶乘也可以用递归的方法解决:n!=1*2*3*...*n,
n的阶乘也可以看作n乘以n-1的阶乘:n!=n*(n-1)!,
实现代码:
static int f(int n)
{
if(n==1)
{
return 1;
}
else
{
return f(n - 1) * n;
}
}
这里的终止条件是f(1)=1,否则也会陷入无限循环。

 

posted @ 2017-08-20 11:44  xiezz  阅读(171)  评论(0编辑  收藏  举报