c 中公式的递归函数:a(n)=a(n-1)+a(n-2)

recursive function in c for the furmula: a(n)=a(n-1)+a(n-2)

我正在尝试为公式编写递归函数:
a(n)=a(n-1)+a(n-2)
我试着简单地写出来:

 unsigned int ladder(unsigned int n)
{
    unsigned int ret=0;
    if (n < 1)
        return ret;
    ret = ladder(n - 1) + ladder(n - 2);


}

但是在调用 ladder(n-2) 时进入堆栈溢出
(出于某种原因,它将 n 设置为一个非常大的整数)

我觉得我遗漏了一些非常基本的东西,但又想不通是什么。

函数returns当n不小于1时什么都不做

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

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

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

这里有一个演示程序。

#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' );
}

程序输出为

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