当然可以,以下是用数组实现记忆性的斐波那契数列的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'函数,最终输出计算结果。

C语言实现记忆性斐波那契数列:数组优化

原文地址: https://www.cveoy.top/t/topic/loCY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录