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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

递归算法小例子

發布時間:2025/6/15 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 递归算法小例子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

程序調用自身的編程技巧稱為遞歸( recursion)。
一個過程或函數在其定義或說明中又直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。用遞歸思想寫出的程序往往十分簡潔易懂。
一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。?
注意:?
(1) 遞歸就是在過程或函數里調用自身;?
(2) 在使用遞增歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口,否則將無限進行下去(死鎖)。

遞歸算法一般用于解決三類問題:
(1)數據的定義是按遞歸定義的。(Fibonacci函數)
(2)問題解法按遞歸算法實現。(回溯)
(3)數據的結構形式是按遞歸定義的。(樹的遍歷圖的搜索)

遞歸的缺點:
遞歸算法解題的運行效率較低。在遞歸調用的過程當中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等。

例一

1、??古典問題——有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問第三年每個月的兔子總數為多少?(提示:兔子的規律為數列1,1,2,3,5,8,13,21....

代碼:


??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? Program p = new Program();
??????????? Console.WriteLine(p.tuzi(7));
??????? }
??????? public int tuzi(int n)?
??????? {
??????????? if (n == 1 || n == 2)
??????????? {
??????????????? return 1;
??????????? }
??????????? else?
??????????? {
??????????????? return tuzi(n - 1) + tuzi(n - 2);
??????????? }

??????? }
??? }

例二

2、??趣味問題——年齡。有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?用遞歸算法實現。

代碼:

class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? Program p = new Program();
???????????
??????????? Console.WriteLine( p.age(5));
??????? }

??????? /// <summary>
??????? /// 遞歸法求歲數
??????? /// </summary>
??????? /// <param name="n">有幾個人</param>
??????? /// <returns></returns>
?????? int age(int n)
????? {
????????? int c;

????????? if(n==1)
???????????? return 10;
?????
???????? else
????????? {
???????????? c = age(n-1)+2;
????????????? return c;
????????? }???
????? }

例三

3、??趣味問題——猴子吃桃。海灘上有一堆桃子,五只猴子來分。第一只猴子把這堆桃子憑據分為五份,多了一個,這只猴子把多的一個扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五只猴子都是這樣做的,問海灘上原來最少有多少個桃子?

代碼:

class Program
??? {
??????? static void Main(string[] args)
??????? {
????????????
??????????? Program p = new Program();
????????????
??????????? Console.WriteLine(? p.PeachNumber(5));
?????????
??????? }
??????? /// <summary>
??????? /// 遞歸法求桃子數
??????? /// </summary>
??????? /// <param name="n"></param>
??????? /// <returns></returns>
??????? int PeachNumber(int n)?
??????? {
??????????? if (n == 1)
??????????? {
??????????????? //最后一個是至少是六個
??????????????? return 6;
??????????? }
??????????? else?
??????????? {
??????????????? return (PeachNumber(n - 1) + 1) * 5;
??????????? }
??????? }

例四

?

漢諾塔問題。漢諾塔(又稱河內塔)問題是源于印度一個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片黃金圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。并且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動一個圓盤。用C#編寫一個程序,實現輸出三個圓盤的漢諾塔移動步驟

?

static void Main(string[] args)
??????? {
??????????? int li_disk_total;

??????????? System.Console.Write("Please input disk total:");
??????????? int.TryParse(System.Console.ReadLine(),out li_disk_total);
??????????? hanoi(li_disk_total, 'a', 'b', 'c');
??????????? System.Console.WriteLine("Move success");
??????????? System.Console.ReadLine();
??????? }

??????? public static void hanoi(int n,char a,char b,char c)
??????? {
??????????? if (n == 1)
??????????????? move(n, a, c);
??????????? else
??????????? {
??????????????? hanoi(n - 1, a, c, b);
??????????????? move(n, a, c);
??????????????? hanoi(n - 1, b, a, c);
??????????? }
??????? }

??????? public static void move(int n,char x,char y)
??????? {
??????????? System.Console.WriteLine("Disk " + n.ToString() + " from " + x + " move to " + y);
????????????

??????? }

總結

以上是生活随笔為你收集整理的递归算法小例子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 神马午夜888 | 国产在线最新 | 西西444www大胆无视频 | 国产精品免费一区二区 | 欧美不在线| 久久美利坚 | 男女av免费 | 人人干免费| 蜜臀av夜夜澡人人爽人人 | 日韩最新 | 天堂激情网| 26uuu精品一区二区在线观看 | 国产精品一区二三区 | 国产精久久一区二区三区 | 亚洲四虎影院 | 亚洲精品高清视频在线观看 | www.色悠悠| 亚洲欧美中文日韩在线v日本 | 一级片麻豆 | 九九在线免费视频 | 亚洲精品20p | 日本一区二区三区在线免费观看 | 另类视频一区 | 成人做爰免费视频免费看 | 国产麻豆成人传媒免费观看 | 久久不射网站 | 岛国av电影在线观看 | 成人欧美一区二区三区黑人免费 | 巨胸大乳www视频免费观看 | 国产一区二区三区中文字幕 | 久久久久久穴 | 久久精品国产亚洲av蜜臀色欲 | 88国产精品视频一区二区三区 | 综合激情在线 | 日本老师巨大bbw丰满 | 自拍色图| 国产视频123 | 91在线观看 | caopeng在线 | 午夜精品免费观看 | 在线观看成人免费 | 国产主播在线一区 | 羞羞羞网站 | 好男人www在线视频 我们的2018在线观看免费高清 | 波多野结衣一区二区三区免费视频 | 一级aaa毛片 | 奇米影视中文字幕 | 激情在线观看视频 | 国产精品美女久久久久图片 | 日本中文不卡 | 午夜视频网 | 越南少妇做受xxx片 亚洲av综合色区无码一二三区 | 夜夜操夜夜爽 | 成人作爱视频 | 精品中文字幕一区二区 | 草草影院国产第一页 | 黑人精品xxx一区一二区 | 日本亲与子乱人妻hd | 欧美一级片免费看 | 一级片亚洲 | 久久春色 | 色一情一交一乱一区二区三区 | 国产日韩欧美综合 | 久久久久久国产精品无码 | 放荡闺蜜高h苏桃情事h | 神马国产 | 日韩中文字幕视频 | h无码动漫在线观看 | 91水蜜桃 | proumb性欧美在线观看 | 国产69精品久久久久久 | 一区二区在线影院 | 91se在线| 国产第一毛片 | 毛片基地视频 | 女人18毛片一区二区三区 | 欧美经典一区二区 | 国产综合色视频 | a天堂在线视频 | 丁香激情五月少妇 | 成人激情在线视频 | 看全黄大色黄大片美女人 | 国产激情91 | 欧美日韩一区二区在线视频 | 手机看片日韩久久 | 黄在线免费看 | 天天干干 | 国产女主播一区二区三区 | 国产精品69久久久久孕妇欧美 | 亚洲欧美日韩综合在线 | 黑料网在线观看 | 亚洲国产欧美一区二区三区深喉 | 亚洲无吗在线 | 色哟哟黄色 | 亚洲精品久久久乳夜夜欧美 | 亚洲 精品 综合 精品 自拍 | 久久精品国产免费看久久精品 | wwwxxx在线播放 | 天天干狠狠插 |