使用缓存进行递归Fibonacci计算 - 无法找到错误

Dvo*_*ole 1 c algorithm recursion

我写了一个简单的函数来计算斐波纳契数,但它会进入无限循环和崩溃.我似乎无法找到这里的问题.

#include <stdio.h>

int fib(int number, int *cache);

int main(int argc, char *argv[])
{
    int cache[20] = {0};
    int result = fib (3, cache);
    printf("%d ", result);
}

int fib(int number, int *cache)
{
    if (number == 0) return 0;
    if (number == 1) return 1;

    if (cache[number] != 0) return cache[number];

    int result = fib(number - 1, cache) + (number - 2, cache);
    cache[number] = result;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

MOH*_*MED 5

这一行包含错误

int result = fib(number - 1, cache) + (number - 2, cache);
Run Code Online (Sandbox Code Playgroud)

fib不见了.它应该是

int result = fib(number - 1, cache) + fib(number - 2, cache);
Run Code Online (Sandbox Code Playgroud)