嵌套的斐波那契?
Nested fibonacci?
首先这是给学校的,我不是在找讲义。只是指导。
我需要使用非常基本的工具编写斐波那契函数。
我有这些工具(来自我们用 Java 编写的语言):
- 如果-其他
- 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>
我不知道我到底要怎么做才能完成这件事。不允许递归。
有什么指点吗?
再说一次,不是寻找解决方案,只是寻求指导。
非常感谢
像这样?使用 3 个变量代表序列的最后 3 个数字?。你真正想要的是有一个简单的:
a = 0
b = 1
repeat x to 5 by 1
{
c = a + b
a = b
b = c
}
但这是不允许的。但是,由于 if-else 算作 1 条语句,您可以简单地 (ab) 通过在重复的每个部分执行 1 条语句来使用它来执行 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
}
}
}
首先这是给学校的,我不是在找讲义。只是指导。 我需要使用非常基本的工具编写斐波那契函数。
我有这些工具(来自我们用 Java 编写的语言):
- 如果-其他
- 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>
我不知道我到底要怎么做才能完成这件事。不允许递归。 有什么指点吗?
再说一次,不是寻找解决方案,只是寻求指导。
非常感谢
像这样?使用 3 个变量代表序列的最后 3 个数字?。你真正想要的是有一个简单的:
a = 0
b = 1
repeat x to 5 by 1
{
c = a + b
a = b
b = c
}
但这是不允许的。但是,由于 if-else 算作 1 条语句,您可以简单地 (ab) 通过在重复的每个部分执行 1 条语句来使用它来执行 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
}
}
}