c++ 判斷奇數偶數實例介紹
更新時間:2012年11月26日 16:17:28 作者:
下面通過判斷一個數是偶數還是奇數來展示交互遞歸的應用,并且此題突出了遞歸跳躍的信任的重要性,需要的朋友可以參考下
到目前為止,看到的遞歸函數都是直接調用自己。雖然大多數的遞歸函數都符合這一形式,但其實遞歸的定義更為廣泛,如果某個函數被細分成了幾個子函數,那么可以在更深的嵌套層次上應用遞歸調用。例如:如果函數 f 調用函數 g ,而函數 g 反過來又調用函數 f ,這些函數的調用仍然被看作是遞歸。這種類型的遞歸被成為交互遞歸
下面通過判斷一個數是偶數還是奇數來展示交互遞歸的應用,并且此題突出了遞歸跳躍的信任的重要性首先,先看奇數和偶數的描述:
如果一個數的前一個數是奇數,那么該數是偶數
一個樹不是偶數就是奇數
定義0是偶數
遞歸跳躍的信任
從代碼可以看出,代碼的實現是完全基于上面奇數和偶數的描述的三點。初看,這是多么的不可思議。如果想要探索其底層是如何實現的,也只需用一個較少的數字代入,跟蹤調用驗證就OK
如單純地從表面看,單憑 “定義0是偶數” 這個簡單情景真的沒法看出這遞歸竟然能正確工作。所以,對于沒法一下子就能看出的這種情況,我們需要的就是遞歸跳躍的信任,只要我們遞歸分解正確和簡單情景分析正確,實現細節(jié)就不必去擔心,交給計算機。也因此,只要掌握了遞歸的思維,解決一個問題是多么簡單和快捷,多么令人震驚
#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;
}
下面通過判斷一個數是偶數還是奇數來展示交互遞歸的應用,并且此題突出了遞歸跳躍的信任的重要性首先,先看奇數和偶數的描述:
如果一個數的前一個數是奇數,那么該數是偶數
一個樹不是偶數就是奇數
定義0是偶數
遞歸跳躍的信任
從代碼可以看出,代碼的實現是完全基于上面奇數和偶數的描述的三點。初看,這是多么的不可思議。如果想要探索其底層是如何實現的,也只需用一個較少的數字代入,跟蹤調用驗證就OK
如單純地從表面看,單憑 “定義0是偶數” 這個簡單情景真的沒法看出這遞歸竟然能正確工作。所以,對于沒法一下子就能看出的這種情況,我們需要的就是遞歸跳躍的信任,只要我們遞歸分解正確和簡單情景分析正確,實現細節(jié)就不必去擔心,交給計算機。也因此,只要掌握了遞歸的思維,解決一個問題是多么簡單和快捷,多么令人震驚
復制代碼 代碼如下:
#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;
}
相關文章
基于Linux系統調用--getrlimit()與setrlimit()函數的方法
本篇文章是對在Linux系統中調用getrlimit()與setrlimit()函數的方法進行了詳細的分析介紹,需要的朋友參考下2013-05-05
MFC中動態(tài)創(chuàng)建控件以及事件響應實現方法
這篇文章主要介紹了MFC中動態(tài)創(chuàng)建控件以及事件響應實現方法,詳細講解了MFC中動態(tài)創(chuàng)建控件以及事件響應的概念與實現方法,具有一定的實用價值,需要的朋友可以參考下2014-10-10

