不熟悉Java遞歸方法的程式碼

WBOY
發布: 2024-01-13 19:48:19
轉載
454 人瀏覽過

不熟悉Java遞歸方法的程式碼

java程式碼不懂遞歸方法

這也是個循環的方法 初學者可能很難看懂...我解釋一下

例如 那個fun()方法裡面的參數是100吧 我把它改一下 改成2好吧

這個遞歸方法的目的是累加,和迴圈累加的結果相同,只是執行方式不同。

程式執行的過程如下:

當你傳2進去時. 程式會執行else裡面的內容

也就是return temp fun(temp-1);

實際上是回傳的是:2 fun(2-1);

也就是: 2 fun(1) 把原來的那個參數3改為了2;

我開始說了吧 這是個累加的程式 所以把3提出來賦給 前面定義好的sum 所以現在的sum=2;

因為這是個遞歸的方法 所以接下來要重複執行這個fun(int temp)方法 ;

只是現在的參數變成了1

所以 接下來程式會這樣走 :

因為參數是1 所以會進入if裡面

所以會回傳1;

所以現在的sum就應該是之前的sum加上現在的fun(1)回傳的1

so.....now sum就該是:2 1=3;

我只是舉了其中的兩個數字之間的循環 其他的98個數字之間的循環也是這樣的

總之遞歸就是一直呼叫自己 直到無法滿足條件時就不會呼叫自己了

你看看吧 可能有點多 我想解釋的更加清楚一點 之前我也遇到過 不過我沒問過別人 沒看懂或者是不懂的再問我.....

Java遞歸演算法高收請進!用遞歸實作

作的挺好看的阿,能做出這樣水準的介面,這個小問題應該難不到你吧。

這裡的問題是:

1. 設計這個圖的結構,最簡單的就是用陣列了。

2. 怎麼列舉相連的節點。簡單的說就是判斷左上、右上、左、右、左下、右下的問題。

3. 怎麼依序判斷顏色相同問題,最簡單的演算法是淹沒法。就是從上面6個方向開始找,找到下一個點後,從6個方向開始找。 。 。

大概的程式碼如下:

class Rabbit

{

final int D_UP_LEFT = 1 ;

final int D_UP_RIGHT = 2 ;

final int D_LEFT = 3 ;

final int D_RIGHT = 4 ;

final int D_DOWN_LEFT = 5 ;

final int D_DOWN_RIGHT = 6 ;

getColor () ;

getCloseRibbit (int direction)

{

... // 這裡實作取得相鄰指定方向兔子的函數

// 如果沒有回傳null .

}

int getColor () {}

List checkColor ()

{

ArrayList list = new ArrayList () ;

doCheckColor (list, this) ;

return list ;

}

void doCheckColor (List list, Rabbit r)

{

if (r.getColor () != this.getColor () || list.contains (r))

return ;

list.add (this) ;

for (int i = D_UP_LEFT ; i

{

Rabbit next = r.getCloseRibbit (i) ;

if (next != null)

next.doCheckColor (list, r) ;

}

}

}

結果的list就是你要的相同顏色的小兔子。

JAVA如何使用遞迴方法實作從1到m中取nn

使用陣列的遞迴:

public class Test12 {

static int M = 4;

static int N = 3;

static int[] a= new int[]{1,2,3,4};

static int[] b = new int[N];

public static void main(String[] args){

C(M,N);

}

static void C(int m,int n){

int i,j;

for(i=n;i

b[n-1] = i-1;

if(n>1)

C(i-1,n-1);

else {

for(j=0;j

System.out.print(a[b[j]] " ");

System.out.println();

}

}

}

}

輸出:

1 2 3

1 2 4

1 3 4

2 3 4

java實作遞歸運算n!輸入n如果不是整數提示重新輸

java 實作遞歸運算n! ,輸入n,如果不是整數,提示重新輸...

port java.util.Scanner;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class Test {

public int jiecheng(int num) {// 遞歸階乘

if (num > 1)

return num * jiecheng(num - 1);

else if (num == 1)

return 1;

else

return 0;

}

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);// 從鍵盤取得輸入

String num = "";

Pattern p = Pattern.compile("\\d ");// 正規表示式,符合(1到N位元)整數

Matcher m = null;

int k = 0;

while (true) {

System.out.print("請輸入整數:");

num = sc.nextLine();// 取得一行輸入

#m = p.matcher(num);

if (m.matches()) {

k = Integer.valueOf(num);// 字串轉整數

break;

} else

System.out.println("不是整數,請重新輸入!");

System.out.println();

}

System.out.println(new Test().jiecheng(k));// 呼叫階乘的方法

}

}

喜居寶地千年旺 福照家門萬事興 喜迎新春

以上是不熟悉Java遞歸方法的程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:docexcel.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!