首页 > 解决方案 > 为什么记忆不需要指针?

问题描述

例如,在这个工作正常的代码中,使用数组而不是指向数组的指针完成了记忆。(int mem[] 而不是 int* mem)

int fibonacci(int n,int mem[]){
    if(n < 3)
    return 1;   

    if(mem[n])
    return mem[n];

    mem[n] = fibonacci(n - 1, mem) + fibonacci(n - 2, mem);
    return mem[n];
    } 

int climbStairs(int n){
    int mem[50] = {0};
    return fibonacci(n + 1, mem);
}

我不明白,当其中一个函数返回时,返回函数的调用者函数如何将数据保存到前一个 mem[n]。函数返回时不应该删除函数数组吗?在该函数返回之后,调用者函数调用的另一个函数如何具有该值?

注意:这是 leetcode 中爬楼梯的解决方案。我写的。

标签: crecursiondynamic-programming

解决方案


在函数参数中使用[]时,它是一个指针。

int foo(int x[])

int foo(int *x)

是 100% 等效的。

但是,这将是另一回事:

int foo(int x[10])

推荐阅读