基本的遞歸函數

  以前一開始接觸遞歸,真的很難理解那到底是怎麼運行的。但是昨天化了一晚上理解完了一段python語言中的一段遞歸後,頓時豁然開朗了。完全搞明白後,自己又寫了cpp中的pow函數和iterate函數,分別用於求某數的次方和累加和。
  遞歸函數前面的一部分要寫明什麼時候跳出這個循環。比如求a的b次方的函數,就要寫明當b等於1的時候,跳出循環,返還a。(可惜一開始寫的時候又一次寫成了b=1)。

    if(b==1)
    return a;

  接下來是如果不符合條件,就再一次進入循環:c=a*pow(a,b-1);
當然重新調用遞歸函數時參數要修改一下,使其更接近跳出循環的那個值。

    horatio@horatio-OptiPlex-3010:~/c$ vim recursion.cpp
    horatio@horatio-OptiPlex-3010:~/c$ g++ recursion.cpp -o recursion
    horatio@horatio-OptiPlex-3010:~/c$ ./recursion

  首先在c文件夾中建立文本,輸入下面的代碼,然後編譯,最後執行。

#include<iostream>
using namespace std;
int pow(int a,int b)
{
    int c=0;
    if(b==1)
    return a;
    c=a*pow(a,b-1);
    return c;
}
int iterate(int a)
{
    int c=0;
    if(a==1)
    return 1;
    c=a+iterate(a-1);
    return c;
}
int main()
{
    int i=2;
    int j=10;
    int x=0,y=0;
    x=pow(i,j);
    y=iterate(j);
    cout<<x<<endl;
    cout<<y<<endl;
    return(0);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章