初步了解递归函数

递归是指在函数体中直接或间接的调用自身。
递归必须有终止条件,否则,将会出现无限递归。
无限递归会耗尽内存,导致程序崩溃,必须避免。
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,否则也会陷入无限循环。

 

转载于:https://www.cnblogs.com/xiezz/p/7399378.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值