程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 判斷一個數是偶數還是奇數

判斷一個數是偶數還是奇數

編輯:C++入門知識

交互遞歸
到目前為止,看到的遞歸函數都是直接調用自己。雖然大多數的遞歸函數都符合這一形式,但其實遞歸的定義更為廣泛,如果某個函數被細分成了幾個子函數,那麼可以在更深的嵌套層次上應用遞歸調用。例如:如果函數 f 調用函數 g ,而函數 g 反過來又調用函數 f ,這些函數的調用仍然被看作是遞歸。這種類型的遞歸被成為交互遞歸

下面通過判斷一個數是偶數還是奇數來展示交互遞歸的應用,並且此題突出了遞歸跳躍的信任的重要性

首先,先看奇數和偶數的描述:
如果一個數的前一個數是奇數,那麼該數是偶數
一個樹不是偶數就是奇數
定義0是偶數
遞歸跳躍的信任
從代碼可以看出,代碼的實現是完全基於上面奇數和偶數的描述的三點。初看,這是多麼的不可思議。如果想要探索其底層是如何實現的,也只需用一個較少的數字代入,跟蹤調用驗證就OK
如單純地從表面看,單憑 “定義0是偶數” 這個簡單情景真的沒法看出這遞歸竟然能正確工作。所以,對於沒法一下子就能看出的這種情況,我們需要的就是遞歸跳躍的信任,只要我們遞歸分解正確和簡單情景分析正確,實現細節就不必去擔心,交給計算機。也因此,只要掌握了遞歸的思維,解決一個問題是多麼簡單和快捷,多麼令人震驚

[cpp] 
#include <iostream> 
using namespace std; 
bool isodd(unsigned); 
bool isodd(unsigned n) 

    return   !(iseven(n)); 

bool iseven(unsigned n) 

    if (n == 0) 
    { 
        return   true; 
    } 
    else  
    { 
        return   isodd(n-1); 
    } 

int main() 

    cout << isodd(11) << endl; 
    return    0; 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved