为了账号安全,请及时绑定邮箱和手机立即绑定

计算数的定义问题

#include <stdio.h>

/* 定义获取单词数量的函数 */

int getWordNumber(int n)

{   

    if(n == 1)

    {

        return 1;    //第一天只会1个单词

    }

    else{

        return getWordNumber(n+1)*(n/2);       //到第天会的单词数量

    }

}

int main()

{

    int num = getWordNumber(10);     //获取会了的单词数量

    printf("小明第10天记了:%d个单词。\n", num);

    return 0;

}

为什么 return getWordNumber(n+1)*(n/2);       //到第天会的单词数量,这里n-1就有结果,而n+1为什么没有结果呢?难道是超过了n的定义数了吗?


正在回答

6 回答

http://img1.sycdn.imooc.com//55fbbb740001359e06900454.jpg


这是阶乘的递归示意图,仅供参考。练习中的函数n==1时,就会return 1;所以参数是10时,要不断的减一,直到n==1时返回1,n为2时,getWordNumber(2-1)*(2/2)等于1.如果是加一,那么就没有数n==1时,就会return 1这个条件作参考,就不能推导出getWordNumber(10)的值了

0 回复 有任何疑惑可以回复我~

请查阅递归推导。必须n-1,而不能n+1。

0 回复 有任何疑惑可以回复我~
#1

swing997 提问者

为什么??
2015-09-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926018    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

计算数的定义问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信