iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 18
0

因為沒什麼題材
在網絡逛街時,看到一個寫得不錯的遞迴
這一個程式是利用遞迴作倒相輸出
其實遞迴也可以用作簡單的加密

=================分格線=================

我們來看看程式碼

void TurnBack()
{
    char sentence;
    scanf("%c", &sentence);
    if( sentence != '\n'){
        TurnBack();
        printf("%c",sentence);
    }  }

int main()
{
    printf("Enter a sentence: ");
    TurnBack();
    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20180102/20107818HghwfME0uT.png

我們在使用遞迴時,需要有兩大守則
[1]每次return,問題範圍會縮小
[2]問題有結束的條件
如果不遵守這兩大守則,function會產生無窮循環 ( 變成while(1) )

=================分格線=================

利用char資料形態,來處理字串

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

新手使用遞迴前,需要把程式的思緒弄清晰

sentence != '\n'
程式只要非"\n"的字元,就會一直呼叫function
而我們所輸入的"Enter",即電腦的"\n"

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

TurnBack();
printf("%c",sentence);

程式是先呼叫,後輸出
而達到倒相輸出的效果

https://ithelp.ithome.com.tw/upload/images/20180102/201078183oWvs6fzu4.png

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

但由於程式呼叫下一層,在滿足結束條件後,會往回上一層
因此程式所執行的時間會較長、效率比較低


上一篇
[新年活動] Bingo賓果遊戲 [1]
下一篇
else if基本概念[1]
系列文
提神?看程式比喝咖啡更有效。30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言