请问这个递归算法如何理解呢?

img


请问为什么要用long?还有就是真的就return fibo(n - 1) + fibo(n - 2);这么简单就可以了吗?

long fibo(int n)
{
    if (n <= 2)
        return 1;
    else
        return fibo(n - 1) + fibo(n - 2);
}


long 比 int 多4位。
因为该函数在n<=2时会停止。
所以他做的就是你上面写的数列表达式。
但是你的函数不严谨。
没有考虑到 n为负数的情况。
n为负数应该返回0.

long fibo(int n)
{
    if(n<0)
        return 0;
    else if (n <= 2)
        return 1;
    else
        return fibo(n - 1) + fibo(n - 2);
}