嵌套的斐波那契?

时间:2017-04-17 17:15:34

标签: nested fibonacci

首先,这是为了学校,我不是在寻找施舍。只是指导。 我需要使用非常基本的工具编写斐波纳契函数。

我有这些工具(来自我们用Java编写的语言):

  • 的if-else
  • for循环
  • 算术
  • 分配
  • 无限嵌套
  • 任意数量的陈述。

问题是任何嵌套或语句只能有一个结果语句或嵌套。

例如,这没关系:

repeat b to 7 by 2
{
  repeat a to 5 by 1
  {
    a = a + 1
  }
}

但这不合适:

repeat x to 5 by 1
{
  x = x + 1
  y = x
}

以下是语法的相关部分:

<code> ::= <statement> <code>
<code> ::= <statement>
<statement> ::= load <string>
<statement> ::= print <expr>
<statement> ::= input <var>
<statement> ::= if <cond> <statement>
<statement> ::= if <cond> <statement> else <statement>
<statement> ::= repeat <var> to <val> by <val>
<statement> ::= <var> = <expr>
<expr> ::= <val> + <val>
<expr> ::= <val> - <val>
<expr> ::= <val> * <val>
<expr> ::= <val> / <val>
<expr> ::= <val>
<cond> ::= <val> == <val>
<cond> ::= <val> > <val>
<cond> ::= <val> < <val>
<val> ::= <num>
<val> ::= <var>

我无法弄清楚我是怎么做到这一点的。不允许递归。 有什么指针吗?

再次,不是寻找解决方案,只是指导。

非常感谢

1 个答案:

答案 0 :(得分:1)

喜欢这个?使用3个变量代表序列的最后3个数字?你真正想要的是一个简单的:

a = 0
b = 1
repeat x to 5 by 1
{
   c = a + b
   a = b
   b = c
}

但这是不允许的。但是,由于if-else计为1个语句,因此您可以通过在重复的每个部分中执行1个语句来简单地(ab)使用它来执行3个语句:

a = 0
b = 1
repeat x to 5 by 1
{
   repeat y to 3 by 1
   {
       if y < 2
       {
            if y < 1
            {
                c = a + b
            }
            else
            {
                a = b
            }  
        }
        else
        {
            b = c
        } 
   }
}