章节
问答
课签
笔记
评论
占位
占位

递归函数(一)

从前有座山啊,山里有座庙啊,庙里有个老和尚和一个小和尚,他们在干什么呢?老和尚在给小和尚讲故事,讲的什么呢?讲的是从前有座山...看到这,大家都会问老师你不讲课,你说这个老掉牙的故事干吗?

在这说这个故事是有意义的,大家再仔细读读这个故事,是不是老和尚在说一件事,当碰到一个条件的时候都会再重复的从头说起呢?

那么这就要给大家引入一个新的概念——递归,递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。

例如:计算n的阶乘可以使用以下代码:

运行结果为: 5的阶乘=120 

任务

小明为了学好英语,需要每天记单词,第一天记1个,第二天记2个依次类推,到第10天的时候小明一共记了多少个单词?

请用代码完成,算出小明第10天开始的时候会了多少个单词?

第10行根据注释提示,填写代码

输出结果为:

?不会了怎么办

1、调用自身函数

2、参考代码

||
1
#include <stdio
    .h>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
提交
重置代码
||

请验证,完成请求

由于请求次数过多,请先验证,完成再次请求

加群二维码

打开微信扫码自动绑定

您还未绑定服务号

绑定后可得到

  • · 粉丝专属优惠福利
  • · 大咖直播交流干货
  • · 课程更新,问题答复提醒
  • · 账号支付安全提醒

收藏课程后,能更快找到我哦~

使用 Ctrl+D 可将课程添加到书签

邀请您关注公众号
关注后,及时获悉本课程动态

举报

0/150
提交
取消
全部 精华 我要发布

最赞回答 / qq_慕虎2485483
阶乘:比如3的阶乘就是:3*2*1=66的阶乘就是:6*5*4*3*2*1=720代码流程:#include &mbestdio.h&{  /* 定义获取单词数量的函数 */int getWordNumber(int n){       if(n == 1)    {        return 1;    //第一天只会1个单...

最新回答 / 慕斯1289592
#include <stdio.h>float taxifee(int clock,int miles){    float money;    if(miles<=3)    {        money=14;        printf("费用为14\n");    }    else    {        if(clock>=23 || clock<5)        {            money=13+1+2.3*(miles-3)*1.2;       ...

已采纳回答 / 慕标7449597
你这个是递归函数,你那个n-1代表的是去调用这个函数,后面加n是调用后的结果加n得到你想要的结果,你换成2*n+1就根本不是这个意思了

最新回答 / 笑赢未来
题目的要求是使用递归函数

最新回答 / 慕桂英7368787
递归函数在执行时要不断调用自身直到触发停止条件,在本例中,getWordNumber(10)需要调用10次,从10到1,在调用到getWordNumber(1)时遇到reutrn 1停止递归

最赞回答 / weixin_慕盖茨2597418
就是你在最下面给n赋值为5,那么调用函数之后就变成了result=factorial(5-1)*5,函数在计算的时候发现了自己,函数就只能调用了自己,factorial(5-1)就重新从factorial这个函数的头开始判断和计算,因为4>0且4不等于0和1,所以factorial(4)又等于factorial(4-1)*4,然后此时result=factorial(4-1)*4*5,然后函数又发现了自己,再次调用自身,一直进行阶乘,直到result=factorial(2-1)*2*3*4*5,这...

最新回答 / weixin_慕标8477849
不能去掉n==1,去掉你第一天就没结果了,return后面可以跟表达式,不用另外设置sum。递归就是调用本身的函数,你把1、2、3代入进去算就理解了,这个其实很简单,就是把每个值的结果累加。

最赞回答 / weixin_慕尼黑2048433
getWordNumber(n-1)+n代入个10,结果就是(10-1)+10=19即为第十天所背的单词,return函数;后变成(9-1)+9为第9天背的单词,依此类推

最新回答 / oohoo
例题里这个情况如果n<0的话就直接报错了,没有输入错误的检查就直接报错,打印“输入错误”应用上是为了检查输入值是否正确

已采纳回答 / weixin_慕田峪9319996
=是赋值符号,返回结果为让左边的值等于右边的,==是是关系符号,返回结果为真(1)或假(0)

最新回答 / 杭电菜菜菜一一一鸡
调用函数使得(n-1)*n进行下去直到n=1,输出结果。

最赞回答 / bugswriter
其实没必要引入"a"之类的表达,思路和我代码的黑体部分是一样的。而答案给出的就很简洁,直接在return里调用函数。原因很简单,无论是int a 然后a=调用函数还是n=调用函数,最终return的东西(...

最赞回答 / 阿巴阿巴O_O
result 没有定义<...code...>

最赞回答 / p1ng
不想骂你,删除printf("1");把下面return 0改为return1即可
全部 我要发布
最热 最新
只看我的

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

账号登录 验证码登录

遇到问题
忘记密码

代码语言