国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

什么是遞歸?用Java寫一個簡單的遞歸程序

瀏覽:70日期:2022-08-16 15:45:18

什么是遞歸?用Java寫一個簡單的遞歸程序

遞歸的定義

遞歸(recursion):以此類推是遞歸的基本思想,將規模大的問題轉化為規模小的問題來解決。

遞歸的要素

自定義遞歸函數,并確定函數的基本功能例如Java從鍵盤輸入一個數,求輸入這個數的階乘。這個時候把輸入的數字作為形參

int diGuiTest(int n ){}

找到遞歸函數循環結束條件在求階乘的時候,我們不妨做出如下思考,例如輸入的n是5,那么5!是5 * 4 3 * 2 * 1,那是不是可以寫成n f(n-1)?,程序運行過程如下:5* f(4)f(4)相當于重新調用了函數,形參為45 * 4* f(n-1)f(3)相當于重新調用了函數,形參為35 * 4* 3* f(n-1)f(2)相當于重新調用了函數,形參為25 * 4* 3 * 2* f(n-1)f(1)相當于重新調用了函數,形參為1很容易發現,這時候如果遞歸調用到n為1的時候,就要結束調用自身代碼如下:

int diGuiTest(int n ){if(n==1){return 1;}else{return n*f(n-1);}}代碼示例

求1?100之間所有自然數的和

int sum (int n ){if(n==1){return 1 ;}else{return n+sum(n-1);}}

斐波拉契數列斐波那契數列(Fibonacci sequence),又稱黃金分割數列,因數學家萊昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、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*)

int fibonacci(int n ){if (n<=1){return n;}else {return fibonacci(n-1)+fibonacci(n-2);}}

漢諾塔問題

什么是遞歸?用Java寫一個簡單的遞歸程序

首先我們考慮最簡單的情況:

什么是遞歸?用Java寫一個簡單的遞歸程序

將最上面的一塊放到B,再將最下面一塊放到C,再把最上面一塊從B放到C即可

什么是遞歸?用Java寫一個簡單的遞歸程序

public class Hanio { public static void main(String[] args) { char A=’A’; char B=’B’; char C=’C’; hannio(3,A,B,C); } static void hannio(int paltfrom,char A,char B, char C){ if (paltfrom==1){ move (A,C); }else { hannio(paltfrom-1,A,C,B);//上面兩個盤子,通過C柱到B柱 move (A,C); hannio(paltfrom-1,B,A,C);// } } static void move(char A,char B){ System.out.println(A+'---->'+B); }}

到此這篇關于什么是遞歸?用Java寫一個簡單的遞歸程序的文章就介紹到這了,更多相關Java 遞歸內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 于田县| 岚皋县| 富民县| 精河县| 金坛市| 朝阳区| 龙口市| 桂阳县| 马公市| 博兴县| 洮南市| 西乡县| 钟山县| 剑川县| 于都县| 忻州市| 康平县| 涿鹿县| 黑山县| 丹江口市| 法库县| 金平| 交城县| 淳化县| 顺昌县| 建阳市| 易门县| 临泉县| 定南县| 新津县| 长泰县| 桂平市| 北宁市| 和政县| 三门峡市| 特克斯县| 枣阳市| 维西| 禄丰县| 吉安县| 营山县|