递归



递归:

递归就是在运行的过程中自己调用自己。

注意事项:

。递归要有出口,不然就是死递归,写递归,重要的一步就是要找到出口。

。递归的次数不能过多

。递归的思想就是拆分和合并的思想

例如,下列为某人祖先的递归定义:

某人的双亲是他的祖先(基本情况)。某人祖先的双亲同样是某人的祖先(递归步骤)。斐波纳契数列(Fibonacci Sequence),又称黄金分割数列,指的是这样一个数列(不死神兔)1123581321.....

斐波纳契数列是典型的递归案例:

n=1n=2时,fib(n)=1

n>2时,fib(n)=fib(n-1)+fib(n-2)

这就是递归的通式,递归的出口为n=0n=1;

由此可编程为:

private static long fib(int i) {

if(i==1||i==2){

return 1;

}else{

return fib(i-1)+fib(i-2);

}

实例:求n的阶乘

n=1,digui(n)=1

n=2,digui(n)=2*digui(1)

n=3,digui(n)=3*digui(2)

..... .........

...... .........

n>1 ,digui(n)=n*digui(n-1)

代码实现:

public class Test2 {

 

public static void main(String[] args) {

// 5的阶乘  

//int num=5*4*3*2*1;

//递归做 5 的阶乘

Long r=diGui(5);

System.out.println(r);

}

public  static Long diGui(int i) {

if(i==1){

return 1L;

}else{

return i*diGui(--i);

}

}

}

内存图:

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值