• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

为什么单纯用getwordnumber(n-1)+n就可以递加并算出答案位55,不可以用(

#include
/* 定义获开单词数量的函数 */
int getWordNumber(int n)
{   
    if(n == 1)
    {
        return 1;    //第一天只会1个单词
    }
    else{
        
        return getWordNumber(n-1)+n;       //到第天会的单词数量
    }
}
int main()
{
    int num = getWordNumber(10);//获开会了的单词数量
    printf("小明第10天记了:%d个单词。\n", num);
    return 0;
}



免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

n(n+1)/2 固然可以做到。但是这个案例的目的应该是为了举例说明递归原理。
getWordNumber(n)=getWordNumber(n-1)+n=getWordNumber(n-2)+n+n-1
=n+(n-1)+(n-2)+……+3+2+getWordNumber(1)
=n+(n-1)+(n-2)+……+3+2+1
这个是这个函数的递归步骤。有的简单的问题可以通过公式法或循环代替的,不过对于例如费波纳茨数列之类的问题显然递归是更好的方法。

使用道具 举报

发新帖

发布任务需求已有1031289位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!