C++阶乘函数(递归)详解

C++阶乘函数(递归)详解,第1张

概述递归计算阶乘函数将接收一个整数参数并计算其阶乘。现在不妨用数学的例子来检验一个递归的应用。 在数学中,符号 n! 表示数字 n 的阶乘。整数 n 的阶乘被定义如下。 n! = 1 X 2 X 3 X 递归计算阶乘函数将接收一个整数参数并计算其阶乘。现在不妨用数学的例子来检验一个递归的应用。

在数学中,符号 n! 表示数字 n 的阶乘。整数 n 的阶乘被定义如下。

n! = 1 X 2 X 3 X … X n; 如果 n>0
n =1; 如果 n = 0

规则规定,当 n 大于 0 时,其阶乘是从 1 到 n 的所有正整数的乘积。例如,6! 可以计算为 1X2X3X4X5X6。规则还规定了基本情况:0 的阶乘是 1。

可以使用递归定义一个数的阶乘,如下所示:

factorial(n) = n X fafactorial(n-1); 如果 n> 0
factorial(n) = 1; 如果 n = 0

这个递归定义的 C++ 实现语句如下:
int factorial(int num){    if (num == 0) //基本情况返回1;        return 1;    else        return num * factorial(num - 1);}
来看一个显示 3! 的值的程序,其语句如下:

cout << factorial(3) << endl;

第一次调用该函数时,num 被设置为 3,所以 if 语句将执行以下代码行:

return num * factorial(num - 1);

虽然这是一个 return 语句,但它并不会立即返回,这是因为在确定返回值之前,必须确定 factorial(num-1) 的值。该函数被递归调用,直到第 4 次调用,其中的 num 参数将被设置为 0。图 1 中直观地说明了函数每次调用期间 num 的值和返回值。

图 1 递归阶乘函数图解
下面的程序演示了 factorial 函数的使用:
// This program demonstrates a recursive function// to calculate the factorial of a number.#include <iostream>using namespace std;// Function prototypeint factorial(int);int main(){    int number;    cout << "Enter an integer value and I will display\n";    cout << "its factorial: ";    cin >> number;    cout << "The factorial of " << number << " is ";    cout << factorial (number) << endl;    return 0;}int factorial(int num){    if (num == 0) //base case        return 1;    else        return num * factorial(num - 1);}
程序输出结果:

Enter an integer value and I will display
its factorial: 4
The factorial of 4 is 24

总结

以上是内存溢出为你收集整理的C++阶乘函数(递归)详解全部内容,希望文章能够帮你解决C++阶乘函数(递归)详解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1231081.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存