递归算法O(∩_∩)O哈哈~

本文介绍了递归的基本概念和定义,解释了构成递归的必要条件,并通过斐波那契数列和全排列的递归实现举例说明了递归的应用。递归算法是指函数在运行过程中直接或间接调用自身,必须有明确的结束条件,以防止无限循环。
摘要由CSDN通过智能技术生成

***什么是递归? ***
从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说:从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说…(以此循环)
应该很多人都听过这个吧!其实这也算是递归的思想吧。不断调用“从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,有一天,老和尚对小和尚说”只不过没有结束条件,但递归有结束条件吧了。通过上面这个故事,相信也对递归有了一点点的了解吧。接下来我们就来说说对递归的定义吧。

递归的定义

递归算法是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象。

在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。

懂了吗?这是书上对其的一种定义,我的理解就是函数本身不断的调用自己,直到达到结束的条件(该理解的仅是个人的理解,如有啥不对可以指出哦)。

构成递归需具备的条件

  1. 子问题须与原始问题为同样的事,且更为简单;
    简单来说就是像数学里的公式,改变的仅仅是数值吧。
    (该理解的仅是个人的理解,如有啥不对可以指出哦)。
  2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
    简单来说就是你每天做着循环的事,总不可能一直做下去吧,总要停下来休息休息出去走走吧。递归也是一样的,不可能一直循环,总要停下来,不然就死循环了!
    (该理解的仅是个人的理解,如有啥不对可以指出哦)。
    在这里插入图片描述
    递归的执行,如上图所示,进来之后判断是否为结束条件,如果是则进入出口,如果不是则进入循环体,然后再次调用本身,就这样循环着,直到结束条件为真,跳出函数。

简单例题:

题目要求:编写程序在控制台输出斐波那契数列第20项
输入20,输出6765

斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
这个数列从第三项开始,每一项都等于前两项之和。
即:f[n]=f[n-1]+f[n-2];(n>2)

代码如下:

public class FiB {
   

	public static void main(String[] args) {
   
		// TODO Auto-generated method stub
		System.out.println(fib(20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值