什么是遞歸?用Java寫一個簡單的遞歸程序
什么是遞歸?用Java寫一個簡單的遞歸程序
遞歸的定義遞歸(recursion):以此類推是遞歸的基本思想,將規(guī)模大的問題轉(zhuǎn)化為規(guī)模小的問題來解決。
遞歸的要素自定義遞歸函數(shù),并確定函數(shù)的基本功能例如Java從鍵盤輸入一個數(shù),求輸入這個數(shù)的階乘。這個時候把輸入的數(shù)字作為形參
int diGuiTest(int n ){}
找到遞歸函數(shù)循環(huán)結(jié)束條件在求階乘的時候,我們不妨做出如下思考,例如輸入的n是5,那么5!是5 * 4 3 * 2 * 1,那是不是可以寫成n f(n-1)?,程序運行過程如下:5* f(4)f(4)相當(dāng)于重新調(diào)用了函數(shù),形參為45 * 4* f(n-1)f(3)相當(dāng)于重新調(diào)用了函數(shù),形參為35 * 4* 3* f(n-1)f(2)相當(dāng)于重新調(diào)用了函數(shù),形參為25 * 4* 3 * 2* f(n-1)f(1)相當(dāng)于重新調(diào)用了函數(shù),形參為1很容易發(fā)現(xiàn),這時候如果遞歸調(diào)用到n為1的時候,就要結(jié)束調(diào)用自身代碼如下:
int diGuiTest(int n ){if(n==1){return 1;}else{return n*f(n-1);}}代碼示例
求1?100之間所有自然數(shù)的和
int sum (int n ){if(n==1){return 1 ;}else{return n+sum(n-1);}}
斐波拉契數(shù)列斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個數(shù)列:0、1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波那契數(shù)列以如下被以遞推的方法定義:F(0)=0,F(xiàn)(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);}}
漢諾塔問題

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

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

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); }}
到此這篇關(guān)于什么是遞歸?用Java寫一個簡單的遞歸程序的文章就介紹到這了,更多相關(guān)Java 遞歸內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Java commons-httpclient如果實現(xiàn)get及post請求2. 一文帶你徹底理解Java序列化和反序列化3. JS中6個對象數(shù)組去重的方法4. Python基于requests庫爬取網(wǎng)站信息5. vscode運行php報錯php?not?found解決辦法6. python中文本字符處理的簡單方法記錄7. PHP laravel實現(xiàn)導(dǎo)出PDF功能8. Python使用Selenium自動進行百度搜索的實現(xiàn)9. PHP利用curl發(fā)送HTTP請求的實例代碼10. 資深程序員:給Python軟件開發(fā)測試的25個忠告!

網(wǎng)公網(wǎng)安備