C语言实现记忆性斐波那契数列:数组优化
当然可以,以下是用数组实现记忆性的斐波那契数列的C语言代码:
#include <stdio.h>
// 定义一个全局数组,用于存储已计算的斐波那契数列项
int memo[50] = {0};
// 定义一个递归函数,实现斐波那契数列的计算
int fib(int n) {
if (n <= 1) {
return n;
}
if (memo[n] != 0) { // 如果数组中已经有该项的值,直接返回
return memo[n];
}
memo[n] = fib(n-1) + fib(n-2); // 计算并存储该项的值
return memo[n];
}
int main() {
int n;
printf("请输入要计算的斐波那契数列项数:");
scanf("%d", &n);
printf("斐波那契数列的第%d项为:%d\n", n, fib(n));
return 0;
}
在上述代码中,我们定义了一个全局数组'memo',用于存储已计算的斐波那契数列项。在'fib'函数中,我们首先判断当前要计算的斐波那契数列项是否已经在'memo'数组中有值,如果有,则直接返回该值;如果没有,则进行递归计算,并将计算结果存储在'memo'数组中,以备后续使用。这样,就可以避免重复计算,提高计算效率。在'main'函数中,我们通过输入要计算的项数来调用'fib'函数,最终输出计算结果。
原文地址: https://www.cveoy.top/t/topic/loCY 著作权归作者所有。请勿转载和采集!