Java学习.递归

Java学习.递归

递归

Java递归是指一个方法调用自身的过程。递归可以在解决问题时提供简洁的解决方案,特别是涉及到具有递归结构的问题。
在递归过程中,每个递归调用都会将问题规模缩小,直到满足终止条件为止。递归通常基于分治思想,它可以简化复杂的问题,并提供一种有效的问题求解方式。举个例子:

public class RecursionExample {
    public static void main(String[] args) {
        int n = 3;
        int result = fibonacci(n);
        System.out.println("The " + n + "th Fibonacci number is: " + result);
    }
  
    public static int fibonacci(int n) {
        if (n <= 1) {
            return n; 
        } else {
            return fibonacci(n - 1) + fibonacci(n - 2); 
        }
    }
}

这段代码有人认为说是满足了n <= 1条件才结束了循环,确实是这样,但是说的容易让人迷惑,在下面的代码中:

    if (n <= 1) {
            return n; 
        } else {
            return fibonacci(n - 1) + fibonacci(n - 2); 
        }

实际上使用了多次fibonacci,注意看else后面是return fibonacci(n - 1) + fibonacci(n - 2);正是这里再次调用了fibonacci的方法。

1.首先
如果 n <= 1 为真,直接返回 n,没有任何的下一步直接结束。
2.其次
如果说不满足n <= 1的条件就会进入
else {
return fibonacci(n - 1) + fibonacci(n - 2);
}
这里要注意是有方法的调用,千万不要忽略。
3.完整的运行过程
第一,因为n=3,所以进入else返回第一个和第二个方法
也就是fibonacci(2) + fibonacci(1);注解一下,fibonacci(2)的意思是n=2,然后调用了fibonacci的方法,也就是说我在后面的解释中的fibonacci(x)都是方法。
第二,else还没有运行完,fibonacci(2) + fibonacci(1)=(()fibonacci(1) + fibonacci(0))+1)=((1+0)+1)=2。
去运行原程序看看是否正确。
在这里插入图片描述
一个答案正确,再试一下n=4:
n=4,所以运行else进入fibonacci(3) + fibonacci(2)
然后((fibonacci(2) + fibonacci(1))+(fibonacci(1) + fibonacci(0)))
然后(((fibonacci(1) + fibonacci(0))+1))+(1+0))
然后=(((1 + 0)+1))+(1+0))=3
运行代码查看结果:
在这里插入图片描述
这里就可以证明我们的思路是正确的,所以千万不要被网上写的不清不楚的资料所误解,不要理解成为循环,满足if条件就结束循环。而是递归像一种覆合的代码,一次代码让有多次的判断组合成为递归的模式。(各有各的理解,说实在不行背?)

还有if在代码里起到什么作用?为什么叫做出口?换种说法,if是结束else里面代码的条件吧,如果说else是通道那么if就是站台,想一想黑黑的通道最后里面出现了一个带光的能跳出函数运行的门,所以他才叫做出口。但是最后的结果形式是else(结果)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值