1

私は擬似コードを初めて使用しますが、すべての要素をまとめるのに問題があります。

これは、入力が2つの整数と整数の配列であるfooという名前の関数の定義ですa[1] ... a[n]

1 Foo(k,m, a[1],...,a[n]) 
2   if (k < 1 or m > n or k > m) return 0 
3   else return a[k] + Foo(k+1,m,a[1],...,a[n])

入力整数がk=2m=5であり、入力配列にが含まれているとします[5, 6, 2, 3, 4, 8, 2]。Fooはどのような値を返しますか?総和表記を使用して、Fooが計算するものの一般式を与えます。

これは私の頭を傷つけています。これが私がこれまでにしたことです:

2行目には3つの条件文があります。

  • k<1の場合//2<1の場合..これはfalseです
  • m> nの場合//5が配列内の値の量(7)より大きい場合、これはfalseです。
  • k>mの場合//2>5の場合、これはfalseです

したがって、この関数は3行目を表示します。3行目は次のように述べています。

  • 配列の2番目の値である6を返します。したがって、6を取得してに追加しa[k]ます。a[2](2+1, 5, a[1].....,a[n])

私がやったことはそこまで正しいですか?もしそうなら、私はどのように何であるかを知ることa[n]ができますか?私はそれを見つけることになっていますか?このすべての最終結果は何でしょうか?

4

3 に答える 3

2

簡単な答え:その関数は、すべての数値a [k]、a [k + 1]、...a[m]の合計を返します。

あなたがしていることは今のところ正しいです。「n」は、配列の最後の要素を意味する単なるプレースホルダーです。したがって、入力配列が{5,6,2,3,4,8,2}n = 7(7つの要素があるため)、およびである場合a[n] = 2

しかし、なぜそれがすべての数a [k]、a [k + 1]、... a [m]の合計を返すのか、あなたは自分で調べなければなりません。分析を続けてください。:)

于 2010-09-03T03:54:53.640 に答える
1

したがって、6を取り、それを(2 + 1、5、a [1] .....、a [n])に追加します。

6を取り、それをFoo(2 + 1、5、a [1] .....、a [n])に追加します。これは再帰関数です。k=3およびm=5で関数を再度評価する必要があります。

于 2010-09-03T03:56:13.733 に答える
0

あなたの擬似コードは私には実際のコードのように見えるので、あなたは混乱していると思います。私は間違っているかもしれませんが、私たちは平易な英語のフレーズを使用して、別の方法で擬似コードを書くように教えられています。

于 2010-09-03T03:56:33.963 に答える