首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用c表示的递归函数: a(n)=a(n-1)+a(n-2)

用c表示的递归函数: a(n)=a(n-1)+a(n-2)
EN

Stack Overflow用户
提问于 2022-05-29 10:26:03
回答 1查看 88关注 0票数 -2

我试图为公式编写一个递归函数:

a(n)=a(n-1)+a(n-2)

我试着把它写出来:

代码语言:javascript
复制
 unsigned int ladder(unsigned int n)
{
    unsigned int ret=0;
    if (n < 1)
        return ret;
    ret = ladder(n - 1) + ladder(n - 2);


}

但是当调用梯子(n-2)时,它会进入堆栈溢出。

(由于某种原因,它将n设为一个非常大的整数)

我觉得我错过了一些非常基本的东西,但我想不出是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-29 10:44:43

当n不小于1时,该函数将不返回任何内容。

同样,当n等于1时,表达式n-2产生可以存储在无符号int类型的对象中的最大值。

该函数可以通过以下方式声明和定义

代码语言:javascript
复制
unsigned long long int ladder( unsigned int n )
{
    return n < 2 ? n : ladder( n - 1 ) + ladder( n - 2 );
}

这是一个演示程序。

代码语言:javascript
复制
#include <stdio.h>

unsigned long long int ladder( unsigned int n )
{
    return n < 2 ? n : ladder( n - 1 ) + ladder( n - 2 );
}

int main( void )
{
    for ( unsigned int i = 0; i < 25; i++ )
    {
        printf( "%llu ", ladder( i ) );
    }
    putchar( '\n' );
}

程序输出是

代码语言:javascript
复制
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72422848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档