day 04 (a)哈諾塔函數(shù) hanoi 形參 實(shí)參分析

//http://www.tudou.com/programs/view/e0YyEezlkSk 視頻鏈接
2^(n-1)
思路:
if(n==1)
cout<<A<<"-->"<<C<<endl;
else
{
hanoi(n-1,A,C,B); //首先扒吁,將A柱子上的n-1個(gè)盤子蜜氨,通過(guò)C柱子移到B柱子针余。
cout<<A<<"-->"<<C<<endl; //然后淮悼,將A柱子上第N個(gè)盤子,移到C柱子上洲愤。
hanoi(n-1,B,A,C); //最后颅痊,將B柱子上的N-1個(gè)盤子,通過(guò)A柱子移到C柱子彻犁。
}

void Move(char chSour,char chDest)
{
/打印移動(dòng)步驟/
printf("\nMove the top plate of %c to %c",chSour,chDest);
}
Hanoi(int n,char chA,char chB,char chC)
{
/檢查當(dāng)前的盤子數(shù)量是否為1/
/盤子數(shù)量為1叫胁,打印結(jié)果后,不再繼續(xù)進(jìn)行遞歸/
if(n==1)Move(chA,chC);
/盤子數(shù)量大于1汞幢,繼續(xù)進(jìn)行遞歸過(guò)程/
else
{
Hanoi(n-1,chA,chC,chB); //將A柱子上的N-1個(gè)盤子驼鹅,通過(guò)C移到B
Move(chA,chC); //再將A柱子上的第N個(gè)盤子,通過(guò)A移到C
Hanoi(n-1,chB,chA,chC); //最后,將B柱子上的N-1個(gè)盤子输钩,通過(guò)A移到C
}
}
main()
{
int n ;
/輸入盤子的數(shù)量/
printf("\nPlease input number of the plates: ");
scanf("%d",&n);
printf("\nMoving %d plates from A to C:",n);

/*調(diào)用函數(shù)計(jì)算豺型,并打印輸出結(jié)果*/
Hanoi(n,'A','B','C');           //有n個(gè)牌子,將A柱子的盤子通過(guò)B移到C 

}

include<iostream>

include<stdio.h>

using namespace std;

enum Sort{ A,B,C,D,E } ; //注意放的位置

/*
void show(int x) //某一個(gè)語(yǔ)句塊的變量稱為局部變量 僅在此范圍語(yǔ)句塊內(nèi)有效买乃。 eg:x為形式參數(shù)
{
cout<<x<<endl触创;
首先定義上面
形式參數(shù):定義函數(shù)時(shí)函數(shù)名后括號(hào)中的變量名!
實(shí)際參數(shù):調(diào)用函數(shù)時(shí)函數(shù)名后括號(hào)中的表達(dá)式为牍!

1.形參未被調(diào)用時(shí)哼绑,不占存儲(chǔ)單元。形參只在調(diào)用過(guò)程中占用存儲(chǔ)單元碉咆。形參定義時(shí)必須指定類型抖韩!
2.實(shí)參是常量。變量或者表達(dá)式疫铜!要與形參類型一致茂浮!而且實(shí)參要有確定的值,占用儲(chǔ)存單元壳咕,在調(diào)用過(guò)程中實(shí)參將值賦給形參席揽!
3.C中實(shí)參對(duì)形參數(shù)據(jù)傳遞時(shí)時(shí)單向傳遞。在存儲(chǔ)單元中是不同的單元谓厘!/
/

void order(char name[40],int num=1,char thank[]="謝謝幌羞!") //int 有默認(rèn)值,當(dāng)并不輸入時(shí)竟稳,自動(dòng)默認(rèn)為1. 并且存在默認(rèn)值的參數(shù)應(yīng)靠右擺放属桦。
{
cout<< name<< ":" << num << "份\t" <<thank<<endl;
}
/
void order(char name[],bool sex)
{
cout<< name[20] <<",是個(gè)"<<(sex?"帥哥":"美女") <<endl; //三目運(yùn)算符的巧妙用法
}
main()
{
/

char name[40];
int num;
cin>>name>>num;
Sort a = A; //enum
cout << a <<endl;
order(name,num); //形式參數(shù) 和默認(rèn)參數(shù)的理解 //傳參過(guò)程 1.保存現(xiàn)場(chǎng) 2.傳參數(shù) 3.執(zhí)行形式參數(shù)語(yǔ)句 4.帶回結(jié)果
cout<< "hello world" <<endl; //輸出語(yǔ)句
/
/

char name[20];
bool sex;
cout<<"please enter name and true /false"<<endl;
cin>>name;
cout<<name<<endl;
cin>>sex;
order(name,sex); //---------------------疑問(wèn)他爸?為何傳入name 在形參中無(wú)法讀饶舯觥?可以用指針解決嗎诊笤?系谐,
//order("xiao",true);
*/
}

c++ 哈諾塔

include<iostream>

using namespace std;

void hanoi(int n,char A,char B,char C);
main()
{

char ch1='A';
char ch2='B';
char ch3='C';

int n;
cout<<"please enter the number for post."<<endl;//輸入柱子的數(shù)量
cin>>n;
hanoi(n,'A','B','C');//將Pa柱子上的n個(gè)盤子,通過(guò)Pb移到Pc讨跟;

}

void hanoi(int n,char A,char B,char C)
{
if(n==1)
cout<<A<<"-->"<<C<<endl; //如果僅一個(gè)盤子纪他,將A--C
else
{
hanoi(n-1,A,C,B); //首先,將A柱子上的n-1個(gè)盤子许赃,通過(guò)C柱子移到B柱子止喷。
cout<<A<<"-->"<<C<<endl; //然后馆类,將A柱子上第N個(gè)盤子混聊,移到C柱子上。
hanoi(n-1,B,A,C); //最后,將B柱子上的N-1個(gè)盤子句喜,通過(guò)A柱子移到C柱子预愤。
}
}

//常見遞歸函數(shù)

/* 9 6 3 0

include<iostream>

using namespace std;
int recursion (int n);
main()
{
int n;
cin>>n;
recursion(n);
}

int recursion(int n)
{
if(n==1||n==2||n==0)
cout<<n<<endl;
else
{
recursion(n-3);
cout<<n<<endl;
}

}
*/

/*

include<iostream>

using namespace std;
int factorial(int n);

main()
{
int n;
cout<<"please input number factorial"<<endl; //輸入數(shù)的階乘
cin>>n;
cout<<factorial(n)<<endl;
}

int factorial(int n)
{
if(n==1||n==0)
return 1; //注意點(diǎn)
else
{
//return
return n*factorial(n-1); //注意點(diǎn) 此為兩個(gè) return

//cout<<n<<endl;

}
}
*/

/* 簡(jiǎn)單遞歸的理解分析

include<iostream>

using namespace std;
int show(int n);
main()
{
int n;
cin>>n;
show(n);
}

int show(int n)
{
if(n>9)
{
show(n/10); //如果數(shù)大于10 ,就除以10.
cout<<" ";
}
cout << n%10; //if n小于10咳胃,就求與
}

//432 32 //先除以100
//32 2 //再除以 10
//2 <=9 2%10 ==2
斐波那契數(shù)列

include<iostream>

using namespace std;

int fib(int n);//斐波那契數(shù)列 1 1 2 3 5 8 f(n)=f(n-1)+ f(n-2)

main(){
int n;
cin>> n;
cout<<fib(n)<<endl;; //輸出斐波那契函數(shù)

}

int fib(int n)
{
if(n == 1 || n == 2)
{
return 1; //思路解析:1. 將數(shù)看成兩部分植康,即三個(gè)數(shù)。{F(n-2)展懈、F(n-1)F(n)} 已知 Fn=F(n-1)+F(n-2) 并當(dāng)f(n=1||n==2)=1時(shí)销睁,依次遞歸求解
}
return fib(n - 2) + fib(n - 1); //兩個(gè)return 語(yǔ)句記住即可 //fib(3) =f(1)+f(2) fib(4) =f(2)+f(3)
}
標(biāo)示盤子的編號(hào):

include <iostream>

using namespace std;

void hanoi(int top,int n,char A,char B,char C);

main()
{
hanoi(1,4,'A','B','C');//將Pa柱子上的n個(gè)盤子,通過(guò)Pb移到Pc
}
void hanoi(int top, int n,char A,char B,char C) //幾號(hào)盤子 剩幾個(gè)盤子 從哪 到哪 臨時(shí)位置
{
if(n==1)
cout<< top <<" :"<< A <<"-->"<< C <<endl; //如果僅一個(gè)盤子存崖,將A--C
else
{
hanoi(top , n-1 , A,C,B); //將A柱子上的n-1個(gè)盤子通過(guò)C移到B
cout<< top +n-1 <<" :"<< A <<"-->"<< C <<endl; //將A柱子上的最后一個(gè)盤子冻记,通過(guò)A移到C
//hanoi(top+n-1 , 1 ,A,B,C) ; //然后,將A柱子上第N個(gè)盤子来惧,移到C柱子上冗栗。
hanoi(top, n-1 , B,A,C); //最后,將B柱子上的N-1個(gè)盤子供搀,通過(guò)A柱子移到C柱子隅居。
}
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市葛虐,隨后出現(xiàn)的幾起案子胎源,更是在濱河造成了極大的恐慌,老刑警劉巖屿脐,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乒融,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡摄悯,警方通過(guò)查閱死者的電腦和手機(jī)赞季,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奢驯,“玉大人申钩,你說(shuō)我怎么就攤上這事”窀螅” “怎么了撒遣?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)管跺。 經(jīng)常有香客問(wèn)我义黎,道長(zhǎng),這世上最難降的妖魔是什么豁跑? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任廉涕,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狐蜕。我一直安慰自己宠纯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布层释。 她就那樣靜靜地躺著婆瓜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪贡羔。 梳的紋絲不亂的頭發(fā)上廉白,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音乖寒,去河邊找鬼蒙秒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛宵统,可吹牛的內(nèi)容都是我干的晕讲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼马澈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓢省!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起痊班,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤勤婚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后涤伐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體馒胆,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年凝果,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了祝迂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡器净,死狀恐怖型雳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情山害,我是刑警寧澤纠俭,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站浪慌,受9級(jí)特大地震影響冤荆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜权纤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一钓简、第九天 我趴在偏房一處隱蔽的房頂上張望乌妒。 院中可真熱鬧,春花似錦涌庭、人聲如沸芥被。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至冗茸,卻和暖如春席镀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背夏漱。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工豪诲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挂绰。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓屎篱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親葵蒂。 傳聞我的和親對(duì)象是個(gè)殘疾皇子交播,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容