递归函数

Posted beimingdaoren

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数相关的知识,希望对你有一定的参考价值。

任何一个方法既可以调用其他方法,又可以调用自己,当这个方法调用自己的时候,就是递归方法或者递归函数

递归两个特点:

1.递归方法一直会调用自己,直到某些条件满足时停止,也就是说一定要有出口;

2.递归方法会有一些参数,而他会把这些新的参数传递给自己。

 

递归常用场景——阶乘

  • 阶乘是指小于某个数正整数之之积,关键字:!;例如:3!= 3 * 2!= 3 * 2 * 1 = 6;
  • 0的阶层为1;
  • n的阶乘实际上就是n-1的阶乘乘以n,公式为: n! = n * (n-1)!;

利用递归方法求某数的阶乘:

public int Factorial(int n){
    if(n == 0)
    {
    return 1;
    } 
    else
    {
        return n*Factorial(n-1);
    } 
}    

 

递归常用场景——斐波拉契数列

斐波拉契数列(Fiboracci)规律为:后一个数等于前两个数之和。

公式:如果F0 = 0,且 F1 = 1,则Fn = F(n-1) + F(n-2);

利用递归方法列出斐波拉契数列数列:

public int Fiboracci(int n ){
    if(n == 0 || n == 1){
        return n;         
    }else{
        return Fiboracci(n-2) + Fiboracci(n-1);
    }
}    

 

以上是关于递归函数的主要内容,如果未能解决你的问题,请参考以下文章

vue递归组件的一些理解

哈斯克尔。我很困惑这个代码片段是如何工作的

如何在自定义PyYAML构造函数中处理递归?

JavaSE 方法的使用

JavaScript - 代码片段,Snippets,Gist

Java基础之方法的调用重载以及简单的递归