c语言阶乘函数怎么写 c语言圆的面积编程

递归函数topic -C语言0|前言本节主要研究一种嵌套自己函数调用的方法——递归调用。1|示例例如,给定整数n,计算并输入阶乘n!这个项目。阶乘函数的定义:int factorial(int n){ int product; for (int i = 1; i <= n; i++){ product = product * i; } return product; }这...

递归函数topic -C语言

0|前言

本节主要研究一种嵌套自己函数调用的方法——递归调用。

1|示例

例如,给定整数n,计算并输入阶乘n!这个项目。

阶乘函数的定义:

int factorial(int n){ int product; for (int i = 1; i <= n; i++){ product = product * i; } return product; }

这个函数思想:用一个循环把1到n的值依次相乘进行计算,得到的乘积作为结果返回。

使用for循环解决问题。

一个循环从1开始一直不断相乘,直到乘以n为止

2|用递归思想求解阶乘

用递归思想求解函数的阶乘

int factorial(int n) { if (n==1){ return 1; } return factorial(n - 1) * n; }

其实我在换个角度思考这个问题,N!可以看做n*(n-1)!与(n-1)的乘积!也可以看成是(n-1)*(n-2)!…的产物;。类比2 * 1,代码不是更简洁一点吗?

实际上,这种在函数定义中调用自身的情况叫做–递归调用

(1)头部递归

例如,定义的函数:

int factorial(int n){ if (n == 1){ return 1; } return factorial(n-1) * n; }

如果传入函数factorial()的n是5:

阶乘(5) = 5 *阶乘(4)

= 5 * 4 *阶乘(3)

= 5 * 4 * 3 *阶乘(2)

= 5 * 4 * 3 * 2 *阶乘(1)

= 5 * 4 * 3 * 2 * 1

这种递归设计,返回一个包含自己函数的递归调用,叫做过账返回。

(2)尾部递归

与头递归相对应的是尾递归,尾递归的思想是这样实现的:

int factorial(int n, int product){ if (n == 0){ return product; } product = product * n; return factorial(n-1, product); }

也取n=5来理解程序的实现细节:

factorial (5,1) ~ factorial(n, product * n) = factorial(4,1*5) = factorial(4, 5) = factorial(3, 5*4) = factorial(3, 20) = factorial(2, 20*3) = factorial(2, 60) = factorial(1, 60*2) = factorial(1, 120)] = factorial(0, 120*1) = factorial(0, 120) = 120 ~ product

小伙伴们没有发现,在尾部递归的实现中,一个函数的每一次递归调用都会将一个阶段性的结果传递给下一个被调用的函数,当最终的一般终止条件满足时,直接返回最终的结果。

本文来自枯萎○还行投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/545565.html

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

相关推荐

  • chrome更改语言设置 教你设置谷歌浏览器的语言

    Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。Google Chrome的特点是简洁、快速。GoogleChrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,Google Chrome基于更强

    2023-07-29 08:32:01
    268 0
  • 语言栏不显示了怎么办 win7语言栏修复命令

    我们在使用电脑的时候会遇到一些问题,比如Windows S10语言栏没了怎么解决问题。让我们和边肖一起往下看。操作流程:1.首先,我们在计算机的开始菜单中找到并点击设置选项。2.然后,在页面中,我们找到并单击时间和语言选项。3.然后我们首先在左边选择语言,在右边找到拼写、打

    2023-07-29 05:54:01
    1025 0
  • c语言选择排序法代码 c语言三种排序方法

    排序,从字面上讲,就是选择一组序列中的元素。比如给定一组数列,要求对其元素从小到大排序,那么每次排序只需要选择数列第一位最小的元素,第二次排序和第三次排序也是一样,这样后面数列中最小的元素被选中,放在已经排序的元素的末尾,直到最后没有元素可以排序。这里有几

    2023-07-28 15:02:01
    723 0
  • win10怎么还原语言栏位置

    你好,win10无法输入中文,语言状态栏消失,你可以下载安装输入法,然后语言状态栏就有了。1电脑点击开始键,再点击控制面板,如下图所示2在控制面板,点击更改或其他输入法,如下图所示3在更改或其他输入法窗口,点击更改键盘,如下图所示4在更改键盘,点击语言栏,再点击停

    2023-07-28 06:52:01
    150 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信