2017-04-17 1 views
0

まずこれは学校用で、私は配布資料を探していません。ちょうどガイダンス。 非常に基本的なツールを使ってフィボナッチ関数を書く必要があります。ネストフィボナッチ?

は、私はこれらのツールを持っている(私たちはJavaで書いた言語から):

  • のif-else
  • forループ
  • 任意の
  • 算術
  • 割り当て
  • 無限のネストステートメントの数。

問題は、ネストまたはステートメントが結果ステートメントまたはネストを1つしか持てないことです。

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

言語の文法を掲示することはこれを簡単に答えることになるだろう。 –

+0

良い点。追加されました。 –

+0

if-else文は1つまたは2つの文としてカウントされますか? – David

答えて

1

このようにします。シーケンスの最後の3つの数字を表す3つの変数を使用しますか?あなたが本当に望むのは、単純なものです。

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

これは許可されていません。しかし、1文とのif-elseカウントするので、あなたは、単に(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 
     } 
    } 
} 
+0

彼らは、1つのブロック内で複数のステートメントが許可されないという質問に答えました。 –

+0

固定ロジック。次の質問は、ゼロベースまたは1ベースのループですか? for(int x = 0; x <5; x ++)に対しては、xから5 x 1までの繰り返しが繰り返されますか? – David

+0

申し訳ありません、はい、ループはどこでも開始でき、それはfor-loopと同等です。 –