You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字母版斐波那契序列实现问题求助

字母版斐波那契序列实现问题求助

大家好,我正在做学校布置的编程任务,需要实现一个字母版的斐波那契函数。规则如下:

  • f(0) 对应输入的第一个单个字母
  • f(1) 对应输入的第二个单个字母
  • 对于n≥2,f(n) = f(n-1) 拼接 f(n-2)

举个例子,如果f(0)=a、f(1)=b,那么:

  • f(2)=ba
  • f(3)=bab
  • f(4)=babba

我写了一段C代码,在n≤3的时候能正常输出预期结果,但当n超过3之后就会出现问题。一开始我以为是程序执行速度的问题,试着加了usleep函数,但也只能让程序在n稍大一点的时候正常工作,无法解决根本问题。

下面是我的代码:

#include <stdio.h>
#include <unistd.h>
#include <string.h>

void fib(char bank[][700], char result[700], int n) {
    char temp[700];
    for (int i = 2; i <= n; i++) {
        if (i > 2) {
            strcpy(bank[i - 1], result);
        }
        for (int k = 0; bank[i - 1][k] != 0; k++) {
            result[k] = bank[i - 1][k];
        }
        strcat(result, bank[i - 2]);
    }
}

int main() {
    int cases = 0;
    scanf("%d", &cases);
    getchar();
    for (int i = 1; i <= cases; i++) {
        int n = 0; char first[5] = {};
        char wordBank[][700] = {{},{}};
        char result[700] = "#";
        scanf("%d %c %c", &n, &first[0], &first[1]);
        getchar();
        wordBank[0][0] = first[0];
        wordBank[1][0] = first[1];
        if (n == 0) {
            printf("Case #%d: %c\n", i, first[0]);
        } else if (n == 1) {
            printf("Case #%d: %c\n", i, first[1]);
        } else if (n > 1) {
            fib(wordBank, result, n);
            printf("Case #%d: %s\n", i, result);
        }
    }
    return 0;
}

测试用例的输入如下:

3
2 a b
3 a b
4 a b

预期输出是:

Case #1: ba
Case #2: bab
Case #3: babba

需要说明的是,题目保证f(0)和f(1)都是单个字母,不会出现多字符的输入情况。有没有大佬能帮我看看代码哪里出问题了?

备注:内容来源于stack exchange,提问作者ruwby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:38:03