欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言遞歸之漢諾塔和青蛙跳臺階問題

 更新時間:2021年04月09日 14:48:37   作者:一只當歸  
這篇文章主要介紹了C語言遞歸之漢諾塔問題和青蛙跳臺階問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

遞歸就是一個函數(shù)執(zhí)行過程中調(diào)用自己,在c語言中有很多關(guān)于遞歸的經(jīng)典問題,例如:斐波那契數(shù)列問題、漢諾塔問題等,在研究遞歸問題時我們要注意三點:
1.遞歸的結(jié)束條件
2.遞歸在每次進行過程中,都得離條件越來越近
3.相鄰兩次遞歸調(diào)用之間的關(guān)聯(lián)關(guān)系

漢諾塔問題:

有三根桿子A, B, C。A桿上有N個(N > 1)穿孔圓盤, 盤的尺寸由下到上依次變小.要求按下列規(guī)則將所有圓盤移至C桿:
1.每次只能移動一個圓盤;
2.大盤不能疊在小盤上面,可將圓盤臨時置于B桿, 也可將從A桿移出的圓盤重新移回A桿, 但都必須尊循上述兩條規(guī)則。求移動的過程。

int step = 0; //設(shè)置全局變量step記錄步數(shù)
void move(int i,char form,char to){
	printf("第%d步,將第%d個盤子從%c移動到%c\n", ++step,i,form, to);
}
void Hanio(int n,char a,char b,char c){
	if (n == 0)
	{
		return;
	}
	Hanio(n - 1,a,c,b); //第n-1個A柱上的盤子通過C柱移動到B柱
	move(n, a, c);  //將A柱上編號為n的盤子移動到C柱
	Hanio(n - 1, b, a, c); //再將B柱上的第n-1個盤子通過A柱移動到C柱
}
int main(){
	    int n;
		printf("請輸入漢諾塔中有多少個圓盤:\n");
		scanf("%d", &n);
		Hanio(n, 'A', 'B', 'C'); //將n個圓盤從A柱通過B柱移動到C柱
		system("pause");
		return 0;
}

運行結(jié)果:

在這里插入圖片描述

青蛙跳臺階問題:

一只青蛙一次可以跳上 1 級臺階,也可以跳上2 級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
當n = 1,只有1中跳法;當n = 2時,有兩種跳法;當n = 3 時,有3種跳法;當n = 4時,有5種跳法;當n = 5時,有8種跳法??梢钥偨Y(jié)為f(n)=f(n-1)+f(n-2),本質(zhì)上與斐波那契數(shù)列相同。

int Frog(int n){
	if (n <= 2 && n >= 0)
	{
		return n;
	}
	else if (n < 0)
	{
		printf("您的輸入錯誤\n");
		return n;
	}else
	{
		return Frog(n - 1) + Frog(n - 2);
	}
}
int main(){
		int n;
		printf("請輸入有幾級臺階:\n");
		scanf("%d", &n);
		int result = Frog(n);
		if(n >= 0){ 
			printf("青蛙有%d種跳法\n", result);
		}
		system("pause");
		return 0;
}

運行結(jié)果

在這里插入圖片描述

到此這篇關(guān)于C語言遞歸之漢諾塔問題和青蛙跳臺階問題的文章就介紹到這了,更多相關(guān)C語言遞歸漢諾塔青蛙跳臺階內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語言詳細講解指針數(shù)組的用法

    C語言詳細講解指針數(shù)組的用法

    在C語言和C++等語言中,數(shù)組元素全為指針變量的數(shù)組稱為指針數(shù)組,指針數(shù)組中的元素都必須具有相同的存儲類型、指向相同數(shù)據(jù)類型的指針變量。指針數(shù)組比較適合用來指向若干個字符串,使字符串處理更加方便、靈活
    2022-05-05
  • 在C語言中調(diào)用C++做的動態(tài)鏈接庫

    在C語言中調(diào)用C++做的動態(tài)鏈接庫

    如果你有一個c++做的動態(tài)鏈接庫.so文件,而你只有一些相關(guān)類的聲明,那么你如何用c調(diào)用呢,別著急,本文通過一個小小的例子,讓你能夠很爽的搞定.
    2016-05-05
  • c++ const引用與非const引用介紹

    c++ const引用與非const引用介紹

    const引用是指向const對象的引用,可以讀取ref,但不能修改所以也就有將const變量賦值給非const引用是非法的,感興趣的朋友可以了解下,或許本文對你有所幫助
    2013-01-01
  • SQL Server中的數(shù)據(jù)復(fù)制到的Access中的函數(shù)

    SQL Server中的數(shù)據(jù)復(fù)制到的Access中的函數(shù)

    SQL Server中的數(shù)據(jù)復(fù)制到的Access中,表的結(jié)構(gòu)相同 不要提用openrowset,因為Access文件和SQL Server不在一臺機器上
    2008-11-11
  • 教你5分鐘輕松搞定內(nèi)存字節(jié)對齊

    教你5分鐘輕松搞定內(nèi)存字節(jié)對齊

    隨便google一下,人家就可以跟你解釋的,一大堆的道理,我們沒怎么多時間,討論為何要對齊.直入主題,怎么判斷內(nèi)存對齊規(guī)則,sizeof的結(jié)果怎么來的,請牢記以下3條原則
    2013-09-09
  • 怎么鎖定鼠標的示例代碼分享

    怎么鎖定鼠標的示例代碼分享

    使用代碼怎么才能鎖定鼠標?這個功能很簡單只要一個ClipCursor()就可以搞定,需要的朋友可以參考下
    2014-01-01
  • C語言實現(xiàn)隨機發(fā)牌

    C語言實現(xiàn)隨機發(fā)牌

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)隨機發(fā)牌,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C++構(gòu)造函數(shù)的初始化列表詳解

    C++構(gòu)造函數(shù)的初始化列表詳解

    這篇文章主要為大家介紹了C++構(gòu)造函數(shù)的初始化列表,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 詳解C++ STL中vector擴容機制

    詳解C++ STL中vector擴容機制

    vector是表示可以改變大小的數(shù)組的序列容器,就像數(shù)組一樣,vector對其元素使用連續(xù)的存儲位置,這篇文章將給大家詳細介紹C++ STL中vector擴容機制,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • C++實現(xiàn)自定義撤銷重做功能的示例代碼

    C++實現(xiàn)自定義撤銷重做功能的示例代碼

    在使用c++做界面開發(fā)的時候,尤其是實現(xiàn)白板功能時需要自己實現(xiàn)一套撤銷重做功能.如果是qt則有QUndoable對象,可以直接拿來用。但是如果是使用gdi繪圖,則可能需要自己實現(xiàn)了。本文就來用C++實現(xiàn)自定義撤銷重做功能,需要的可以參考一下
    2022-12-12

最新評論