首先,这是为了学校,我不是在寻找施舍。只是指导。 我需要使用非常基本的工具编写斐波纳契函数。
我有这些工具(来自我们用Java编写的语言):
问题是任何嵌套或语句只能有一个结果语句或嵌套。
例如,这没关系:
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>
我无法弄清楚我是怎么做到这一点的。不允许递归。 有什么指针吗?
再次,不是寻找解决方案,只是指导。
非常感谢
答案 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
}
}
}