memoization c语言
时间: 2024-05-03 21:16:33 浏览: 38
Memoization是一种优化技术,可以在计算过程中缓存函数的结果,以便在后续调用中重复使用,从而提高程序的性能。下面是一个使用memoization的C语言示例:
```c
#include <stdio.h>
int fib(int n, int memo[]) {
if (memo[n] != -1) {
return memo[n];
}
if (n <= 1) {
memo[n] = n;
} else {
memo[n] = fib(n - 1, memo) + fib(n - 2, memo);
}
return memo[n];
}
int main() {
int n = 10;
int memo[n + 1];
for (int i = 0; i <= n; i++) {
memo[i] = -1;
}
printf("%d\n", fib(n, memo));
return 0;
}
```
这个示例使用memoization来计算斐波那契数列的第n项。在函数`fib`中,如果memo数组中已经缓存了第n项的结果,则直接返回memo[n],否则计算第n项的值并将结果存入memo数组中。在主函数中,我们创建一个大小为n+1的memo数组并将其初始化为-1,然后调用fib函数来计算斐波那契数列的第n项。由于使用了memoization,这个程序的性能比不使用memoization的版本要更快。
阅读全文