苏木三少
错的不是你,而是这个世界。

<每天一个> 算法实现之递归

递归算法

在开始说递归算法之前,我先科普一些知识。

调用栈(call stack)

栈的定义:

栈是限定仅在表头进行插入和删除操作的线性表。要搞清楚这个概念,首先要明白”栈“原来的意思,如此才能把握本质。”栈“者,存储货物或供旅客住宿的地方,可引申为仓库、中转站,所以引入到计算机领域里,就是指数据暂时存储的地方,所以才有进栈、出栈的说法。

栈属于一个简单的数据结构,他的结构我们可以想成一个盒子,我们一次放进去一个(push入栈),当我们放满以后,我们就可以取了(pop出栈)我们每次取最上面的一次也取一个。

我们简单理解就可以啦!

下面我们细说递归:

递归就是程序执行过程中自己调用自己的一种方法。

这个对于我们来说还是直接看代码比较好,还有就是递归的运用,在求数的阶乘,斐波那契数列等,今天我就写这两种代码的方法体。供大家学习参考。

上图第一个为数的阶乘,第二个为斐波那契数列;

下面为实现的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.Scanner;
public class DiGui {
    public static int Function(int i) {
        if(i == 1)
            return 1;
        else
            return i*Function(i-1);
    }
    public static int Fibonacci(int n){
        if(n <= 2) {
            return n;
        }
        else {
             return Fibonacci(n-1)+Fibonacci(n-2);
        }
    }
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        System.out.println("求一个数的阶乘:");
        Scanner S = new Scanner(System.in);
        int k = S.nextInt();
        int g = Function(k);
        System.out.println("输出的结果为:"+g);
        int l = Fibonacci(k);
        System.out.println("输出的结果为"+l);
    }
}
赞(5) 打赏
有问题的朋友随时留言,或者加我为好友。我的QQ是805375353. <<苏木三少博客 » <每天一个> 算法实现之递归

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

十年之约