递归算法---阶乘(一)

递归算法:就是一种直接或者间接调用自身的算法。
实现过程:一般通过函数或者子过程来完成,在函数或子过程的内部,编写代码直接或者间接地调用自己,即可完成操作
规则:把求解问题转化为比原来规模小且类别相同的问题,通过多次的递归调用,最终求出最小问题的解,再通过最小问题的解返回到上次调用,求出次小问题的解;然后在返回上层调用,这样不断重复,最后就可以得到最终问题的解。
本质:循环【只是这种循环它不是使用程序设计语言来实现的而是使用循环调用函数或者子过程的自身实现的】
【代码实现】

#include <iostream>
using namespace std;

/****************************阶乘******************************/
int factorial(int N){
    if (N <= 1) {
        return N;
    }
    return N*factorial(N-1);
}

int main(int argc, const char * argv[]) {
    int resultNum = factorial(6);
    cout<<"最终结果"<<resultNum<<endl;
    return 0;
}

【逻辑分析】

image.png

【递归思想体现】求解问题:6!=6x5x4x3x2x1 问题拆分转化过程:6!=6x5!=>5!=5x4!=>4!=4x3!=>3!=3x2!=>2!=2x1!=>1!=1(最小问题) 然后从最小问题返回次小问题2!=2x1层层返回直到最终返回求解问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 记得小时候经常讲的一个故事:从前有座山,山上有座庙,庙里有一个老和尚和一个小和尚,一天,老和尚给小和尚讲了一个故事...
    IT可乐阅读 493评论 0 3
  • 原文链接:https://github.com/EasyKotlin 值就是函数,函数就是值。所有函数都消费函数,...
    JackChen1024阅读 6,029评论 1 17
  • 大家好,我是日记星球272号星宝宝,我正在参加第九期蜕变之旅的写作训练,今天是我的第70篇原创日记。 ...
    艺坊园阅读 217评论 2 1
  • 看这部电影中间段的时候想快进,后半段阿米尔汗主演的pk开始反抗的部分真的很精彩,并且很感动,又被感动到哭。 看完这...
    kiki_9aab阅读 248评论 0 0
  • 不要再回首时已是千年之后, 不要再回首时朋友已尽是白头; 我害怕 那人生的尽头你们不在左右, 我害怕苦辣酸甜只有我...
    龙厌阅读 203评论 0 1