當前位置:首頁 » 編程語言 » java中的遞歸

java中的遞歸

發布時間: 2022-05-23 22:30:55

『壹』 java中的遞歸方法

自己調用自己或幾個方法相互調用。

最經典的是求正整數階的演算法

int fact(int i){

if(i<=1)return 1;

return fact(i-1)*i;

}

多數遞歸方法可以轉換成非遞歸方法。

一般同功能的非遞歸方法,執行效率要優於遞歸方法。但合理的使用遞歸方法,可以使代碼結構更清晰,更有可讀性,從而更方便維護。

『貳』 JAVA中遞歸的概念

說簡單點就是方法調用自身方法。給你個例子:
猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個 第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
public class MonkeyPeach {
public static void main(String[] args) {
System.out.println("第一天的桃子數:"+getPeach_Num(10, 1));
}

// 利用遞歸的方法來求第一天的桃子數,輸入參數為天數和當天的桃子數,輸出為第一天桃子數
public static int getPeach_Num(int day, int peach_num) {
if (day == 1)
return peach_num;
else if (day < 1 || peach_num < 0)
return 0;
else
return getPeach_Num(day - 1, (peach_num + 1) * 2);
}
}

『叄』 java中,遞歸什麼方法怎麼用

public static void main(String args[]) {
System.out.println(plus(3));

static int count = 0;

public static int plus(int i) {
if (i > 10) {
} else {
count = i + plus(i + 1);
}
//System.out.println(count);
return count;
}
這就是一個最簡單的遞歸

『肆』 JAVA如何理解遞歸

1、遞歸做為一種演算法在程序設計語言中廣泛使用,是指函數/過程/子程序在運行過程中直接或間接調用自身而產生的重入現象。
2、遞歸演算法一般用於解決三類問題:
1)數據的定義是按遞歸定義的。(Fibonacci(斐波那契)的函數)

2)問題解法按遞歸演算法實現。(回溯)
3)數據的結構形式是按遞歸定義的。(樹的遍歷,圖的搜索)

『伍』 JAVA程序經常用到「遞歸」,「遞歸」的基本思想是

遞歸的核心思想是分解。把一個很復雜的問題使用同一個策略將其分解為較簡單的問題,如果這個的問題仍然不能解決則再次分解,直到問題能被直接處理為止。
比如求 1+1/2+1/3+...+1/n的和,如果按照我們正常的思維,就會使用一個循環,把所有的表示式的值加起來,這是最直接的辦法。如果使用遞歸的思維,過程就是這樣的,要求1+1/2+1/3+...+1/n的值,可以先求s1=1+1/2+1/3+...+1/(n-1)的值,再用s1加上1/n就是所求的值,而求s1的過程又可以使用上面的分解策略繼續分解,最終分解到求1+1/2的值,而這個問題簡單到我們可以直接解決,自此問題得到解決。
遞歸強調的分治的策略,再舉個例子,有一種排序演算法叫歸並排序,其思想是這樣的:要對一個無序的數組進行排序,可以將這個數組分解為2個小數組,然後對這兩個數組分別排序,再把排好序的兩個數組合並。而這一過程中只有「對兩個數組分別排序」不是我們能解決的,但是這個問題可以使用上面的策略進行再次的分解,最後這個問題就被分解到對2個元素的數組進行排序,而這個問題簡單到我們可以直接處理。
上面提到的分解的策略,或者說演算法,抽象出來就是我們的函數,因為在這個過程中我們要不同的使用這個策略來不斷的分解問題,所以代碼上就體現為這個函數會不斷的調用自身。還有一點,並不是所有的遞歸都是可以實現的,或者說有意義的。如果在分解的過程中,問題最終不能分解到一個可以直接解決的問題,則這個過程是沒有意義,也就是無限的循環。
具體的代碼都不貼了,有興趣可以網路看看。

『陸』 java 遞歸的疑惑

感覺你這個思路比較清奇,不是太符合遞歸的宗旨——問題規模越來越小,直到一個顯而易見的能解決的地步,相反,越是遞歸你這規模越大,result和i都變大,另外一個值得商榷的地方是,問題的規模(100),不是參數化的,那麼這個演算法無法滿足參數化調用,所以,你這個看起來是遞歸的形式,但沒有領會遞歸的靈魂。

重新整理一下思路,函數原型:

int sum(int i),我不知道怎麼算,但是我知道,它等於sum(i-1) + i,sum(i-1)我還是不知道怎麼算,但是我知道,當它為0的時候我就能算了,顯而易見,sum(0)應該等於0,代碼如下:

注意這里問題規模是參數話的,也就是說其他函數調用你,可以傳100,也可以傳1000,還可以傳其他值,不像你的,如果想算101,你要修改一下代碼才可以,問題是我會像下面18行這樣循環調用你:

『柒』 java中遞歸的作用是什麼為什麼要用到遞歸

你的兩個問題其實是一個問題,對吧。
遞歸的作用:遞歸演算法可以解決一些通過遞歸定義的題目。
首先需要明白什麼是遞歸定義的題目,通俗一點來說就是一個大問題中蘊含著小問題,而小問題同時又與大問題的結構相同,只是規模更小。
比如n階乘的定義可以理解為:
n!= n*(n-1)!
從上面不難看出 (n-1)! 就是比n! 規模更小的問題,按照此方法不斷分解下去,就能得到最初的一些基本的已知的數據。然後反過來就可以求出最終的結果了。
n的階乘演算法如下:
private static int jieCheng(int n) {
if(n == 1)
return 1;
else {
return n*jieCheng(n-1);
}
}
還有就是數據結構中二叉樹的定義,也是遞歸定義的。因此二叉樹的好多操作都是通過遞歸實現的。
用遞歸會使程序相當簡潔。

『捌』 在JAVA中什麼是遞歸有什麼用

Java方法遞歸是指在一個方法的內部調用自身的過程,以此類推就是java方法遞歸的理解思想,具體來講就是把規模大的問題轉化為規模小的相似的子問題來解決。在函數實現時,因為解決大問題的方法和解決小問題的方法往往是同一個方法,所以就產生了函數調用它自身的情況。另外這個解決問題的函數必須有明顯的結束條件,這樣就不會產生無限遞歸的情況了。因此,java方法遞歸的兩個條件就是,一通過遞歸調用來縮小問題規模,且新問題與原問題有著相同的形式;二存在一種簡單情境,可以使遞歸在簡單情境下退出。

熱點內容
我的世界lce伺服器剪輯 發布:2025-02-13 14:40:50 瀏覽:624
phpsftp上傳 發布:2025-02-13 14:35:43 瀏覽:273
c學生管理系統資料庫 發布:2025-02-13 14:21:41 瀏覽:122
傳奇添加會員腳本 發布:2025-02-13 14:20:50 瀏覽:205
微信開發平台源碼 發布:2025-02-13 14:14:20 瀏覽:613
安卓大屏屏幕休眠是什麼意思 發布:2025-02-13 14:13:28 瀏覽:464
腳本的參數設置 發布:2025-02-13 14:11:57 瀏覽:863
androidtexture 發布:2025-02-13 14:11:57 瀏覽:393
怎麼取消網路密碼怎麼設置 發布:2025-02-13 14:11:54 瀏覽:426
我的世界電腦手機等價科技伺服器 發布:2025-02-13 14:06:06 瀏覽:244