算法——递归算法

来源:互联网 发布:微屏软件 编辑:程序博客网 时间:2024/05/19 00:43

@Author:云都小生


概念



递归算法的概念,就是通过不断地调用自身,最终达到解决问题的目的。

递归有两个点需要注意:

1. 要不断的调用自身;

2. 这个递归要有出口,不能成为死循环;

看下面的例子。


用递归解决阶乘



很多介绍递归算法的,都会用递归来做一个题目:计算一个数的阶层。

例如:计算5的阶层,!5 = 5 X 4 X 3 X 2 X 1

用递归来实现:

public class Test{    public static void main(String[] args) {        System.out.println(recursively(3));    }    public static int recursively(int num)    {        if(num <= 1)        {            return 1;        }        else        {            return num*recursively(num-1);        }    }}

在recursively()方法中,我们可以看到else的代码块,不断的穷举所有情况,不断的递归下去。

num = 33*(num-1)3*(2*(num-1))3*(2*(1))

最后把结果一层一层return。需要知道的是,用递归解决阶乘问题,效率实在是太低了。


用递归计算斐波那契数列



斐波那契数列是这样的,第一个数是1,第二个数是1,从第三个数开始都是前两个数的合。

1 1 2 3 5 8 11 19····

用递归实现:

public class Test{    public static void main(String[] args) {        Scanner input = new Scanner(System.in);        int num;        System.out.println("你想要知道第几个斐波那契数?");        num = input.nextInt();        System.out.println("第" + num + "个斐波那契数是:" + fibonacci(num));        }    public static int fibonacci(int num)    {        if(num == 1 || num == 2)        {            return 1;        }        else        {            return fibonacci(num-1)+fibonacci(num-2);        }    }}

记住递归的概念,递归就是不断的调用自身,直到条件满足的时候,就开始一层一层反馈结果,以达到解决问题的目的。

2017/10/9 16:30:37 @Author:云都小生

原创粉丝点击