【问题标题】:Fibonacci Series in Octave八度斐波那契数列
【发布时间】:2020-06-06 10:45:09
【问题描述】:

我需要通过 Octave 中的函数运行斐波那契数列。

我得到了预期的输出,但我的测试用例由于输出缩进而失败。

 function fibo(n)
 a=0;
 b=1;
 x(:,1)=[1];
 for i=2:n
   c=a+b;
   x(:,i)=[c];
   a=b;
   b=c;
 endfor
 g=sprintf("%d   ",x);
 fprintf("Fibonacci sequence:   %s\n",g)
 endfunction    

 a = input("");
 fibo(a)

如果输入 = 10, 输出:(测试用例失败)

使用时

g=sprintf("\t%d",x);

正在显示以下输出:

任何人都可以通过解决缩进来帮助我通过测试用例!

【问题讨论】:

  • 也许您只是缺少一些空格?
  • 是的 Filip,我不能插入空格来通过这个测试用例。如果我这样做了,剩下的 10 个测试用例会失败。
  • 如果是这种情况,您必须提供完整的规范:我们无法猜测其他 10 个测试用例需要什么,或者为什么这一个无法通过放置适当的空格来修复。
  • Scott,输入将是 1 到 100。测试用例获取从 1 到 100 的随机输入数字。
  • 您是否尝试过使用标签\t?像这样:g=sprintf("\t%d",x); fprintf("Fibonacci sequence:%s\n",g)

标签: algorithm matlab octave fibonacci


【解决方案1】:

由于预期输出的图像不能突出显示,我不能 100% 确定,但看起来每个数字都有 4 个字符的固定宽度。

因此,我看到输出的方式是:

Fibonacci sequence: ---1 ---1 ---2 ---3 ---5 ---8 --13 --21 --34 --55

这里的- 表示填充空格。

要进行此更改,您的打印行应更改为以下内容:

g=sprintf(" %4d", x);
fprintf("Fibonacci sequence: %s\n", g)

另外:该函数应该为x 预先分配内存,以便更好地管理内存。在 MATLAB 中,这将类似于:

a=0;
b=1;
x = zeros(1, n); % This reserves memory for n numbers
x(:,1)=[1];
... % your code below

此外,由于x 被设计为一维数组,因此使用起来可能更容易

x(i) = c

而不是像

x(:,i) = [c]

【讨论】:

  • 谢谢迈克尔。以上场景适用于 n10,测试用例失败。我会联系导师解决这个问题!
猜你喜欢
  • 2015-06-05
  • 2013-08-03
  • 2014-05-19
  • 2015-08-30
  • 2013-03-14
  • 2013-02-24
  • 1970-01-01
相关资源
最近更新 更多