這裡主要講一下運用遞迴的典型的例子
(斐波那契數列 和 漢諾塔問題)
遞迴:指在乙個方法(函式)的內部呼叫該方法本身的程式設計方式
1.斐波那契數列:1 1 2 3 5 8 13…
①規律:前兩個數之和等於第三個數 1+1=2,1+2=3,3+5=8…
②**實現如下:
package makasa1test;
//用遞迴表示斐波那契數列
public class testfebonnacci
public static int febonnacci(int i)else }}
③輸出結果:13
2.漢諾塔問題:
①規律分析:
1.當只有乙個盤子時,直接從a柱移動到c柱
2.當有多個盤子,我們把所有盤子分為:上面所有的盤子和底下乙個盤子
首先將a柱上面所有的盤子移動到b柱
然後把所有上面的盤子從b柱移動到c柱
②**實現如下:
package makasa1test;
public class testhanoi
/***
* @param n 一共有n個盤子
* @param from 開始柱子
* @param in 中間柱子
* @param to 目標柱子
*/public static void hanoi(int n,char from,char in,char to)else}}
③輸出結果:
第乙個盤子從a移動到b
第2個盤子從a移動到c
第乙個盤子從b移動到c
資料結構與演算法 基礎演算法篇 遞迴
遞迴是一種非常高效 簡潔的編碼技巧,一種應用非常廣泛的演算法,比如dfs深度優先搜尋 前中後序二叉樹遍歷等都是使用遞迴。方法或函式呼叫自身的方式稱為遞迴呼叫,呼叫稱為遞,返回稱為歸。基本上,所有的遞迴問題都可以用遞推公式來表示,比如 f n f n 1 1 f n f n 1 f n 2 f n n...
資料結構與演算法 遞迴
一 概念 遞迴是一種高效 簡介的編碼技巧,一種應用很廣泛的演算法,比如dfs深度優先搜尋,前中後序二叉樹遍歷等都是使用遞迴。方法或函式呼叫自身的方式成為遞迴呼叫,呼叫稱為遞,返回成為歸 所有遞迴問題都可以用遞迴公式來表示 二 遞迴優缺點 優點 簡潔 缺點 堆疊溢位風險 可根據調整遞迴呼叫的最大深度來...
資料結構與演算法 認識遞迴
淺識 1 遞迴與迴圈 理論上,任何迴圈都可以重寫為遞迴形式 有些語言沒有迴圈語句,只能使用遞迴。2 迴圈改遞迴 1 發現邏輯 相似性 2 一定要有 出口 不然就會死迴圈 3 構造相似性 如果沒有明顯的相似性,可能是缺少引數,需要主動構造,與遞推類似 4 遞迴呼叫 1 遞迴呼叫僅僅是被調函式正好是主調...