遞歸練習(xí)

一琉闪、漢諾塔

假設(shè)所有的盤子都在A柱迹炼,需要移動(dòng)到C柱。
輸入盤子的數(shù)量颠毙,輸出移動(dòng)的步驟斯入。

#include<iostream>
using namespace std;

void hanoi(int n, char a, char b, char c)
{
    if(n != 1)
    {
        hanoi(n - 1, a, c, b);
        cout<<"把一個(gè)盤子從"<<a<<"移到"<<c<<endl;
        hanoi(n - 1, b, a, c);
    }
    else if(n == 1)
    {
        cout<<"把一個(gè)盤子從"<<a<<"移到"<<c<<endl;
    }
}

int main() 
{
    int n;
    char a = 'a', b = 'b', c = 'c';
    cin>>n;
    hanoi(n, a, b, c); 
    return 0;    
}

二、放蘋果

把m個(gè)蘋果放到n個(gè)盤子里蛀蜜,可以有空盤子刻两。求有多少種算法?

例:

輸入:7 3
輸出:8

注:

不考慮盤子順序滴某,即1,5,15,1,1視作同一種放法

int apple(int m, int n)
{
    int x, emptyExist = 0;
    if( m == 1 && n == 1)
        return 1;
    else if(n > m)
    {
        return apple(m, m);
    }
    else if(m != 0 && n == 0)
    return 0;
    else if(m == 0)
    return 1;
    else if( n <= m)
    {
        return apple(m - n, n) + apple(m, n - 1);
    }
}           //在main函數(shù)里輸入m和n后磅摹,輸出apple(m, n)即可

三、求解理解錯(cuò)誤的逆波蘭表達(dá)式的值

寫程序之前壮池,理解錯(cuò)了逆波蘭表達(dá)式的概念偏瓤。
這一段里的逆波蘭表達(dá)式的計(jì)算方法為:
輸入一個(gè)待求解的逆波蘭表達(dá)式input:
float input[] = {'/', '+', '/', 11, 22, 24, 20};
如上input的計(jì)算方式為 : 20 / (24 + (22 / 11))

這種解法貌似有點(diǎn)兒笨

思路:

思路

代碼:

#include<stdio.h>
#include<math.h>

float compute(float before[], int sizebefore, float after[], int sizeafter);
float reverse(float a[], int l);
float input[] = {'/', '+', '/', 11, 22, 24, 20};
float output[] = {'+', 11, 12};

float reverse(float a[], int l)
{
    int i;
    float b[l - 2];
    if(l == 3)
    {
        switch((int)a[0])           //a[2] 運(yùn)算符 a[1]
        {
            case '+':
                return a[2] * 1.0 + a[1];
                break;
            case '-':
                return a[2] * 1.0 - a[1];
                break;
            case '*':
                return a[2] * 1.0 * a[1];
                break;
            case '/':
                return a[2] * 1.0 / a[1];
                break;
        }
    }
    else
    {
        for(i = 1; i <= l - 2; i++)
        {
            b[i - 1] = a[i];        //b[] 為 a[] 除去頭和尾,即下一次遞歸的a[]
        }
        return compute(a, l, b, l - 2);     //a[l - 2] * reverse(b[])
    }
}
float compute(float before[], int sizebefore, float after[], int sizeafter)
{
    switch((int)before[0])
    {
        case '+':
            return before[sizebefore - 1] * 1.0 + reverse(after, sizeafter);
            break;
        case '-':
            return before[sizebefore - 1] * 1.0 - reverse(after, sizeafter);
            break;
        case '*':
            return before[sizebefore - 1] * 1.0 * reverse(after, sizeafter);
            break;
        case '/':
            return before[sizebefore - 1] * 1.0 / reverse(after, sizeafter);
            break;
    }
}
int main()
{
    float toBeSolved[];
    int sizeOf;                 //自行輸入逆波蘭表達(dá)式椰憋,To be continued
    printf("%f", reverse(input, sizeof(input) / sizeof(input[0])));
    return 0;
}

四厅克、真·逆波蘭表達(dá)式

真·逆波蘭表達(dá)式的形式示意:
表達(dá)式:* / + 12 36 + 1 3 - 15 8
含義:((12 + 36) / (1 + 3)) * (15 - 8)
結(jié)果:84

思路:
定義一個(gè)返回表達(dá)式的值的函數(shù)。
輸入橙依,并將輸入作為字符串處理证舟。
若字符串第一個(gè)字符為運(yùn)算符+,-,*,/硕旗,則接下來輸入的肯定是連續(xù)兩個(gè)逆波蘭表達(dá)式,即再調(diào)用兩次此函數(shù)女责,且這兩個(gè)函數(shù)相加減乘除漆枚。
若字符串內(nèi)第一個(gè)字符為數(shù)字,則調(diào)用atof()函數(shù)將數(shù)字轉(zhuǎn)換為浮點(diǎn)數(shù)作為返回值抵知。
注:若第一個(gè)字符為-墙基,可能是遇到了負(fù)數(shù),因此需在此中情形里加入一個(gè)判斷刷喜,如果字符串長度strlen() 為1残制,則按運(yùn)算符處理,否則按數(shù)字處理掖疮。

代碼:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

float reverse()
{
    char a[10];
    scanf("%s", a);
    switch(a[0])
    {
        case '+':   return reverse() + reverse();
        case '-':   if(strlen(a) == 1) return reverse() - reverse();
                    else return atof(a);
        case '*':   return reverse() * reverse();
        case '/':   return reverse() / reverse();
        default:    return atof(a);
    }
}

int main()
{
    float a = reverse();
    printf("%.2f", a);
    return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末初茶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子浊闪,更是在濱河造成了極大的恐慌恼布,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搁宾,死亡現(xiàn)場離奇詭異折汞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盖腿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門字支,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奸忽,你說我怎么就攤上這事∫咀” “怎么了栗菜?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蹄梢。 經(jīng)常有香客問我疙筹,道長,這世上最難降的妖魔是什么禁炒? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任而咆,我火速辦了婚禮,結(jié)果婚禮上幕袱,老公的妹妹穿的比我還像新娘暴备。我一直安慰自己,他們只是感情好们豌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布涯捻。 她就那樣靜靜地躺著浅妆,像睡著了一般。 火紅的嫁衣襯著肌膚如雪障癌。 梳的紋絲不亂的頭發(fā)上凌外,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音涛浙,去河邊找鬼康辑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛轿亮,可吹牛的內(nèi)容都是我干的疮薇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼哀托,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼惦辛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起仓手,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤胖齐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后嗽冒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呀伙,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年添坊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了剿另。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡贬蛙,死狀恐怖雨女,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情阳准,我是刑警寧澤氛堕,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站野蝇,受9級(jí)特大地震影響讼稚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜绕沈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一锐想、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧乍狐,春花似錦赠摇、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抒蚜。三九已至,卻和暖如春耘戚,著一層夾襖步出監(jiān)牢的瞬間嗡髓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工收津, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饿这,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓撞秋,卻偏偏與公主長得像长捧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子吻贿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,233評(píng)論 0 4
  • 23.01_File類遞歸練習(xí)(統(tǒng)計(jì)該文件夾大小) 需求:1,從鍵盤接收一個(gè)文件夾路徑,統(tǒng)計(jì)該文件夾大小 23.0...
    苦笑男神閱讀 294評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理串结,服務(wù)發(fā)現(xiàn),斷路器舅列,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 是啊 你有什么資格不努力 雖然這句話已經(jīng)被各種心靈雞湯的博主po了個(gè)遍 可這也打了不少人的臉 我不知道我究竟想要怎...
    忙狗夫人閱讀 152評(píng)論 0 0
  • 本文參與#漫步青春#征文活動(dòng)肌割,作者:白鵬,本人承諾帐要,文章內(nèi)容為原創(chuàng)把敞,且未在其他平臺(tái)發(fā)布。 駐足 陽光擠開葉隙 打濕...
    書山壓力大2閱讀 100評(píng)論 1 2