递归算法

递归算法

定义递归算法就是在当前的函数中直接或间接的调用自己并传给相应的参数的算法。

归函数的特点

1)函数要直接或间接调用自身。

2)要有递归终止条件检查,即递归终止的条件被满足后,则不再调用自身函数。

3递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等

1、使用递归算法求解斐波那契数列

Fibonacci数列

斐波契数列用数学公式表示出来就是:

F0=0

F1=1

Fn=F(n-1)+F(n-2)n≥2n∈N*

 

/**

 * 使用递归算法求解斐波那契数列

 */

private static int recursion(int n) {

 

{// 使用递归

if (n == 0) {

return 0;

else if (n == 1) {

return 1;

else {

return recursion(n - 1) + recursion(n - 2);

}

}

}

2、使用递归算法求n!

算法:使用递归公式f(n) = n*f(n-1)n!

private static int fn(int n) {

if (n<0) {

throw new RuntimeException("数字非法");

}

int sum = 0;

if (n == 0 || n==1) {

return 1;

}else if(n>1){

sum = n*fn(n-1);

}

return sum;

}

当然求n!还可以使用累积法:

int s=1;

for(int x=1; x<=n; x++){

s = s*x;

}

3使用递归算法实现求职1+1/2+1/3+...+1/n

算法:使用递归公式f(n) = 1/n + f(n-1)

private static float getSum(int n) {

if (n < 1) {

throw new RuntimeException("数字非法");

}

float sum = 0;

if (n == 1) {

return 1;

else if (n > 1) {

sum = (float) (1.0 / n) + getSum(n - 1);

}

return sum;

}

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值