递归调用之求任意正整数的阶乘

C++求任意正整数的阶乘

求阶乘用到的最简单的递归调用

在写需要递归的自定义函数时,分以下几部分进行考虑。
第一,需要考虑递归表达式,即如何把问题一步一步地向下剖开,直至不能再进行剖分为止。
第二,需要考虑问题剖分到最后的情况,即问题最后收敛的情况,这里可以看到求阶乘的时候,收敛到最后需要求m=0时的情况。
第三,刚刚本人犯的一个低级错误,就是在递归的自定义函数里,要避免定义变量或者给自定义变量手动赋值,不然,每次递归调用该函数都要重新给该变量定义和赋值,递归也就失去了意义。

/*计算任意输入的整数的阶乘
date:2019年11月11日
Author:Chauncy Xu*/
#include<iostream>
using namespace std;
int main()
{
    int n,factorial=1;
    cout<<"请输入一个正整数:"<<endl;
    cin>>n;
    int fac_fun(int);
    while(n!=0)
    {
        factorial=fac_fun(n);
        cout<<factorial<<endl;
        cout<<"如需继续计算,请输入n:"<<endl;
        cin>>n;
    }
    return 0;
}
int fac_fun(int m)
{
    if(m==0)
    return 1;/*刚开始我这里写的是m=1;结果一直不对必须得把1 return出去才行,
               因为最后一步需要f(0)需要得到一个返回的值*/
    else
        return m*fac_fun(m-1);
}

第一次写博客,有什么不对的希望各位指出来,大家共同学习,共同进步。

发布了28 篇原创文章 · 获赞 1 · 访问量 627

猜你喜欢

转载自blog.csdn.net/qq_44384577/article/details/103019642
今日推荐