日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【使用递归玩通关汉诺塔游戏】算法01-递归(斐波那契数列、汉罗塔问题)-java实现

發(fā)布時間:2025/3/21 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【使用递归玩通关汉诺塔游戏】算法01-递归(斐波那契数列、汉罗塔问题)-java实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

遞歸

定義:在一個方法(函數(shù))的內(nèi)部調(diào)用該方法(函數(shù))本身的編程方式

簡而言之就是 “自己調(diào)自己”

在玩游戲之前讓我們先對遞歸有一個簡單的了解吧!

5.1 遞歸簡介

遞歸必須有一個出口,也就是說必須有一個限制條件,不能無限制的自己調(diào)用自己,否則會出現(xiàn)棧溢出的錯誤

我們看一個最簡單的遞歸代碼:

public class TestRecursive {public void recursive(int index){if(index>0){System.out.println("我在遞歸哦!"+index);recursive(--index);}}public static void main(String[] args) {new TestRecursive().recursive(3);} }

結(jié)果:

我在遞歸哦!3 我在遞歸哦!2 我在遞歸哦!1

以上遞歸的結(jié)束條件就是index>0
下面我們來看兩個遞歸的應(yīng)用:斐波那契數(shù)列和漢羅塔問題

5.2 斐波那契數(shù)列

斐波那契數(shù)列:1,1,2,3,5,8,13,… (每一項(xiàng)數(shù)大小等于其前兩項(xiàng)之和)

要求第n項(xiàng)斐波那契數(shù)是多少

代碼:

public class Test_Febonacci {public static void main(String[] args) {System.out.println(febonacci(5));}//斐波那契:1 1 2 3 5 8 13...public static int febonacci(int n){//第一項(xiàng)和第二項(xiàng)直接返回1if(n==1||n==2){return 1;//從第三項(xiàng)開始,每一項(xiàng)都等于前兩項(xiàng)之和}else{return febonacci(n-1)+febonacci(n-2);}} }

結(jié)果:

5

5.3 漢諾塔問題

5.3.1 簡介

我們先來玩一個漢諾塔游戲吧
(4399 漢諾塔游戲鏈接:http://www.4399.com/flash/109504_1.html)
感興趣的同學(xué)可以先去玩一玩再回來接著看
漢諾塔游戲規(guī)則如下:

第一關(guān)很簡單,這里就跳過了

第2關(guān):

解法:第1個盤子->第2根柱子
第2個盤子->第3根柱子
第1個盤子->第3根柱子


第三關(guān)的步驟就較為復(fù)雜了,但是應(yīng)該也能看出來,這里就不列出來了
通過上面簡單的游戲,我們可以得到如下過關(guān)步驟

  • 先把最下面的盤子以上的全部盤子移動到第二根柱子(遞歸)
  • 將做下面一個盤子移動到第三柱子
  • 最后將第二個柱子上面的所有盤子移動到第三柱子(遞歸)
  • 這里有人就會說了:游戲規(guī)則不是一次只能移動一個盤子嗎
    對,每錯,雖然我們一次只能移動一個盤子,但是以上的1.3步驟都是要通過遞歸來移動盤子的。
    而我們遞歸結(jié)束的條件就是只有一個盤子,上代碼:

    5.3.2 代碼

    public class Hanoi {/**** @param n 盤子個數(shù)* @param from 移動的起始位置* @param mid 移動需要借助的位置* @param to 移動的終點(diǎn)位置*/public static void hanoi(int n,char from,char mid,char to){//如果只有一個盤子if(n==1){System.out.println("將第1個盤子從"+from+"移到"+to);//多個盤子,無論多少個盤子看成兩個盤子:最下面一個盤子和上面所有盤子}else{//1.將上面所有盤子移動到中間位置midhanoi(n-1,from,to,mid);//2.將最后一個盤子移動到目標(biāo)位置toSystem.out.println("將第"+n+"個盤子從"+from+"移到"+to);//3.最后將中間位置的盤子移動到tohanoi(n-1,mid,from,to);}}//測試public static void main(String[] args) {hanoi(4,'A','B','C');} }

    結(jié)果:

    一個盤子

    將第1個盤子從A移到C

    兩個盤子時

    將第1個盤子從A移到B 將第2個盤子從A移到C 將第1個盤子從B移到C

    三個盤子時

    將第1個盤子從A移到C 將第2個盤子從A移到B 將第1個盤子從C移到B 將第3個盤子從A移到C 將第1個盤子從B移到A 將第2個盤子從B移到C 將第1個盤子從A移到C

    對了,看到這里你就可以去把漢諾塔游戲玩通關(guān)了

    總結(jié)

    以上是生活随笔為你收集整理的【使用递归玩通关汉诺塔游戏】算法01-递归(斐波那契数列、汉罗塔问题)-java实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 人人妻人人澡人人爽欧美一区双 | 中文字幕亚洲精品在线观看 | 国产精品久久9 | 日韩一区二区影视 | 91亚洲国产成人精品一区二三 | 麻豆亚洲精品 | 欧美色爽| 日本一级一片免费视频 | 五月天一区二区三区 | 相亲对象是问题学生动漫免费观看 | 超碰福利在线观看 | 第一次破处视频 | 尤物一区| 成人欧美精品一区二区 | 日韩美女网站 | 国产欧美日韩综合精品一区 | 欧美精品免费一区二区三区 | 午夜影院免费看 | 天堂资源在线观看 | 日本少妇激三级做爰在线 | 日产mv免费观看 | 国产乱码精品一区二三区蜜臂 | 奇米影视777在线观看 | 日本xxxx色| 亚洲精品视频在线 | 成人app在线 | 国产一级影院 | 亚洲AV无码乱码国产精品牛牛 | 91情侣视频 | 国产精在线 | 成年人视频在线看 | 一卡二卡三卡在线 | 亚洲码国产精品高潮在线 | 丁香婷婷久久久综合精品国产 | 国产第一页屁屁影院 | 中文字幕精品一区二区精品 | 日本aaa视频 | 日日夜夜免费精品视频 | 黄色午夜视频 | 日产电影一区二区三区 | 欧美日韩高清不卡 | 日韩最新av | 日韩在线观看视频一区 | 免费黄色入口 | 涩涩视频软件 | 五月激情开心网 | 国产精品天美传媒沈樵 | 日韩精品大片 | 天天操天天操 | 欧美三级一级 | 91尤物视频在线观看 | 亚洲久久在线 | 国产思思99re99在线观看 | 99国产精品99久久久久久 | 自拍偷拍色图 | 69影院少妇在线观看 | 精品少妇人妻av免费久久久 | 久久久婷婷| 老外黄色一级片 | 中文字幕无码日韩专区免费 | 在线观看黄色片 | 欧美一区二区三区四 | 亚洲成人aaa| 国产午夜福利一区二区 | 亚洲不卡在线视频 | 亚洲精品第五页 | 国产日韩大片 | 18成人免费观看网站下载 | 自拍偷自拍亚洲精品播放 | 亚洲综合天堂 | 午夜影院福利 | 亚洲综合av一区 | 欧美做受高潮中文字幕 | 一级黄视频| 一区二区内射 | 久久三级网站 | 黄色片一区二区 | www五月婷婷 | 中国美女性猛交 | 欧美午夜久久久 | 国产女人叫床高潮大片免费 | 日日夜夜国产精品 | 91免费网站 | 性开放耄耋老妇hd | 国产福利观看 | 日韩精品久久一区二区 | 欧美乱妇日本无乱码特黄大片 | 干干操操 | 日本99热 | 超碰91在线观看 | 成人一区二区视频 | 国产成人无码精品久久久久久 | 丰满少妇在线观看网站 | 超碰97av在线 | 欧美成人不卡视频 | 91插插插插插插插插 | 又骚又黄的视频 | 欧美日韩不卡一区 | 久精品视频 |