Java中的递归

来源:互联网 发布:网络暴力电影下载 编辑:程序博客网 时间:2024/06/06 09:24

递归的含义

递归算法是一种直接或者间接调用自身函数或者方法的算法,Java递归算法是基于Java语言实现的递归算法。

注意:递归算法必须要有一个明确的递归结束条件

递归举例

(1) 斐波那契数列

斐波那契数列,又称黄金分割数列、因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)

求斐波那契数列的第n项的值?

package com.zhoujian.javatext;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        int a = getValue(9);    }    //1、1、2、3、5、8、13、21、34、……    //F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)    public static int getValue(int n)    {        if(n<=0)        {            return 0;        }        else if(n==1)        {            return 1;        }else{            return getValue(n-1)+getValue(n-2);        }    }}

(2) 用递归求n的阶乘

package com.zhoujian.javatext;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        int b = getFactorial(5);    }    public static int getFactorial(int n) {        if (n < 0) {            System.out.println("无效输入,请重新输入!");            return 0;        }else if (n == 1 || n == 0) {            return 1;        }else {            return n * getFactorial(n - 1);        }    }}