Domanda Semplicemente Pseudocodice

voti
1

Sono nuovo di psuedocodarlo, e sto avendo difficoltà a mettere insieme tutti i pezzi:

Ecco la definizione di una funzione denominata foo cui ingressi sono due numeri interi e un array di interi 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])

Supponiamo che i numeri interi ingresso sono k=2ed m=5e la matrice di input contiene [5, 6, 2, 3, 4, 8, 2]. Quale valore Foo tornare? Usando la notazione sommatoria, dare una formula generale per quello che calcola Foo.

Questo sta facendo il mio mal di testa. Ecco quello che ho fatto finora:

Linea 2 ha tre istruzioni condizionali:

  • Se k <1 // se 2 <1..this è falso
  • Se m> n // se 5 è maggiore della quantità di valori nella matrice, che è 7, quindi questo è falso
  • Se k> m // se 2> 5, questo è falso

Quindi questa funzione visualizza la linea 3. Linea 3 dice:

  • ritorno a[k]che è a[2]che è il secondo valore della matrice, che è 6. Quindi prendere 6 e aggiungerlo(2+1, 5, a[1].....,a[n])

È quello che ho fatto corretta lassù? Se sì, come faccio a sapere che cosa a[n]è? Dovrei essere trovando che? Quale sarebbe il risultato finale di tutto questo?

È pubblicato 03/09/2010 alle 04:44
fonte dall'utente
In altre lingue...                            


3 risposte

voti
2

Risposta semplice: che la funzione restituisce la somma di tutti i numeri a [k], a [k + 1], ... una [m].

Quello che stai facendo è corretto finora. La "n" è solo un segnaposto che significa l'ultimo elemento dell'array. Quindi, se la matrice di ingresso è {5,6,2,3,4,8,2}, n = 7(causare vostro avere sette elementi), e a[n] = 2.

Ma il motivo per cui restituisce la somma di tutti i numeri a [k], a [k + 1], ... una [m], si dovrebbe trovare da soli. Basta continuare con la tua analisi. :)

Risposto il 03/09/2010 a 04:54
fonte dall'utente

voti
1

Quindi prendere 6 e aggiungerlo a (2 + 1, 5, un [1] ....., un [n])

Take 6 e aggiungerlo alla Foo (2 + 1, 5, un [1] ....., un [n]). Si tratta di una funzione ricorsiva. Bisogna valutare di nuovo la funzione con k = 3 e m = 5.

Risposto il 03/09/2010 a 04:56
fonte dall'utente

voti
0

Penso che si sono confusi perché il vostro pseudocodice assomiglia codice reale per me. Posso sbagliarmi, ma ci viene insegnato a scrivere pseudocodice in modo diverso, utilizzando semplici frasi in inglese.

Risposto il 03/09/2010 a 04:56
fonte dall'utente

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