遞迴 漢諾塔問題和斐波那契數列

2021-10-07 01:20:06 字數 1168 閱讀 4559

1.遞迴

遞迴簡單來講就是方法內部呼叫方法本身,它有如下要求:

1.必須要有臨界條件,也就是遞迴必須要有出口,不能無限制的向深層呼叫方法,否則會棧溢位。

2.漢諾塔問題

問題:有三根柱子:a,b,c。a柱子上有3個盤子,分別是1,2,3,如何使用最少的移動次數,將3個盤子從柱子a移動到柱子c?

規則:1.每次只能移動乙個盤子。

2.大的盤子不能放在小盤子上面。

使用遞迴解決漢諾塔問題

原理:無論漢諾塔有多少層,都將其看做2層:最底層和上面的層。如果塔只有1層,那麼直接將第一層移動到目標位置即可,

如果塔有多層,則始終參考2層的方式來移動塔,即先將上面一層放到過渡位置,再將底層放到目標位置,再將上面層從過渡位置

放到目標位置即可。

移動的最少次數:2

^n-1*/

class

hanoitowerdemo

//解決漢諾塔問題,這裡的from表示起始柱子,in表示過渡柱子,to表示目標柱子

public

static

void

hanoitower

(int n,

char from,

char in,

char to)

else

}}

3.斐波那契數列

斐波那契數列如下:1,1,2,3,5,8…。

特點:數列的第

一、二項為1,從第三項開始,每一項都是前兩項的和。

class

fibonaccitest

}//獲取菲波那切數列的第n項,採用遞迴的方法

public

static

intgetnumber

(int n)

else

return sum;

}//獲取斐波那契數列的第n項,使用迭代的方法

public

static

intgetnumberbyiterate

(int n)

else

}return number;

}}

遞迴 斐波那契數列 漢諾塔

遞迴 在乙個方法 函式 的內部呼叫該方法 函式 本身的程式設計方式。遞迴 public static void print int i public class testfebonacci 列印第n項斐波那契數列 public static int febonacci int i else publ...

遞迴斐波那契數列和漢諾塔

程式呼叫自身的程式設計技巧稱為遞迴 在高階語言中,函式呼叫自己和呼叫其他函式並沒有本質的不同。我們把乙個直接呼叫自己或通過一系列的呼叫語句間接地呼叫自己的函式,稱作遞迴函式 斐波那契數列指的是這樣乙個數列 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img anzoocxp 1607...

演算法 漢諾塔 斐波那契數列求和

問題描述 漢諾塔 又稱河內塔 問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。程式實...