Einfach Pseudocode Frage

stimmen
1

Ich bin neu in psuedocode, und ich habe Probleme setzen alle Teile zusammen:

Hier ist die Definition einer Funktion mit dem Namen foo deren Eingänge zwei ganze Zahlen sind und eine Reihe von ganzen Zahlen 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])

Nehmen wir an, dass die Eingangs ganze Zahlen sind k=2und m=5und der Eingangsanordnung enthält [5, 6, 2, 3, 4, 8, 2]. Welchen Wert zurückgibt Foo? Mit Summen Notation, geben Sie eine allgemeine Formel für das, was Foo berechnet.

Dies macht meinen Kopf verletzt. Hier ist, was ich bisher tat:

Linie 2 hat drei bedingte Anweisungen:

  • Wenn k <1 // wenn 2 <1..this ist falsch
  • Wenn m> n // if 5 größer als die Menge von Werten in dem Array ist, die 7 ist, so ist dies falsch
  • Wenn k> m // if 2> 5, ist dies falsch

So wird diese Funktion Zeile angezeigt 3. Zeile 3 sagt:

  • return a[k]welches a[2]dem der zweite Wert des Feldes ist, die 6 ist 6. So nehmen und fügen Sie(2+1, 5, a[1].....,a[n])

Ist das, was ich dort richtig gemacht? Wenn ja, wie soll ich das wissen , was a[n]ist? Soll ich das finden werden? Was würde das Endergebnis all das sein?

Veröffentlicht am 03/09/2010 um 04:44
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
2

Einfache Antwort: diese Funktion gibt die Summe aller Zahlen a [k], a [k + 1], ... a [m].

Was Sie tun , ist so weit richtig. Das „n“ ist nur ein Platzhalter das letzte Element des Arrays bedeutet. Also , wenn Sie Ihre Eingabe - Array ist {5,6,2,3,4,8,2}, n = 7(dazu führen , dass sieben Elemente haben), und a[n] = 2.

Aber warum es die Summe aller Zahlen zurückgibt a [k], a [k + 1], ... a [m], sollten Sie für sich selbst herausfinden. Nur mit Ihrer Analyse fortzusetzen. :)

Beantwortet am 03/09/2010 um 04:54
quelle vom benutzer

stimmen
1

So nehmen Sie 6 und fügen Sie (2 + 1, 5, a [1] ....., a [n])

Take 6 und fügen Sie Foo (2 + 1, 5, a [1] ....., a [n]). Es ist eine rekursive Funktion. Sie haben die Funktion wieder mit k bewerten = 3 und m = 5.

Beantwortet am 03/09/2010 um 04:56
quelle vom benutzer

stimmen
0

Ich glaube, Sie sind verwirrt, weil Ihr Pseudo-Code wie im richtigen Code zu mir aussieht. Ich kann mich irren, aber wir werden gelehrt, Pseudo-Code anders zu schreiben, einfache englische Phrasen verwenden.

Beantwortet am 03/09/2010 um 04:56
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more