举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > C递归函数 C++ 递归函数

C递归函数 C++ 递归函数

2023-06-19 18:18 C++教程

C递归函数 C++ 递归函数

C递归函数

C语言中的递归函数是一种特殊的函数,它可以调用自身,从而实现一些复杂的功能。递归函数可以用来解决一些复杂的问题,比如求阶乘、斐波那契数列等。

递归函数有两个重要的特性:基本情况和递归情况。基本情况是指在函数中定义一个或多个基本情况,这些基本情况不会导致函数的递归调用,而是直接返回结果。而递归情况则是指在函数中定义一个或多个递归情况,这些递归情况会导致函数的递归调用。

int factorial(int n) 
{ 
    if (n == 0)  // 基本情况 
        return 1; 

    return n * factorial(n - 1); // 递归情况 
} 

C++ 递归函数

学习C++ - C++递归函数

C++函数可以调用自身。

这种行为称为递归。

例子


#include <iostream>
using namespace std;

void countdown(int n);
int main(){
    countdown(4);           // call the recursive function
    return 0;
}

void countdown(int n){
    cout << "Counting down ... " << n << endl;
    if (n > 0)
        countdown(n-1);     // function calls itself
    cout << n << "n";
}

上面的代码生成以下结果。


例2

演示递归函数阶乘。


#include <iostream> 
#include <iomanip> 
using namespace std; 

unsigned long factorial( unsigned long ); // function prototype 

int main() 
{ 
    // calculate the factorials of 0 through 10 
    for ( int counter = 0; counter <= 10; ++counter ) 
        cout << setw( 2 ) << counter << "! = " << factorial( counter ) 
           << endl; 
} // end main 

// recursive definition of function factorial 
unsigned long factorial( unsigned long number ) 
{ 
    if ( number <= 1 ) // test for base case 
        return 1; // base cases: 0! = 1 and 1! = 1 
    else // recursion step 
        return number * factorial( number - 1 ); 
}

上面的代码生成以下结果。

例3


// Testing the recursive fibonacci function. 
#include <iostream> 
using namespace std; 

unsigned long fibonacci( unsigned long ); // function prototype 

int main() 
{ 
    // calculate the fibonacci values of 0 through 10 
    for ( int counter = 0; counter <= 10; ++counter ) 
       cout << "fibonacci( " << counter << " ) = " 
           << fibonacci( counter ) << endl; 

    // display higher fibonacci values 
    cout << "fibonacci( 20 ) = " << fibonacci( 20 ) << endl; 
    cout << "fibonacci( 30 ) = " << fibonacci( 30 ) << endl; 
    cout << "fibonacci( 35 ) = " << fibonacci( 35 ) << endl; 
} // end main 

// recursive function fibonacci 
unsigned long fibonacci( unsigned long number ) 
{ 
    if ( ( number == 0 ) || ( number == 1 ) ) // base cases 
       return number; 
    else // recursion step 
       return fibonacci( number - 1 ) + fibonacci( number - 2 ); 
} 

上面的代码生成以下结果。

例4

测试迭代阶乘函数。


 #include <iostream> 
 #include <iomanip> 
 using namespace std; 

unsigned long factorial( unsigned long ); // function prototype 

int main() 
{ 
    // calculate the factorials of 0 through 10 
    for ( int counter = 0; counter <= 10; ++counter ) 
        cout << setw( 2 ) << counter << "! = " << factorial( counter ) 
            << endl; 
} // end main 

// iterative function factorial 
unsigned long factorial( unsigned long number ) 
{ 
    unsigned long result = 1; 

    // iterative factorial calculation 
    for ( unsigned long i = number; i >= 1; --i ) 
        result *= i; 

    return result; 
}

上面的代码生成以下结果。

阅读全文
以上是编程学为你收集整理的C递归函数 C++ 递归函数全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部