Il suffit de pseudocode Question

voix
1

Je suis nouveau à psuedocode, et je vais avoir du mal à mettre tous les morceaux ensemble:

Voici la définition d'une fonction nommée foo dont les entrées sont deux entiers et un tableau d'entiers 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])

Supposons que les nombres entiers d'entrée sont k=2et m=5et la matrice d'entrée contient [5, 6, 2, 3, 4, 8, 2]. Quelle est la valeur Foo retour? En utilisant la notation de sommation, donner une formule générale pour ce Foo calcule.

Celui-ci fait mon mal à la tête. Voici ce que je l'ai fait jusqu'à présent:

La ligne 2 a trois instructions conditionnelles:

  • Si k <1 // si 2 <1..this est faux
  • Si m> n // si 5 est supérieure à la quantité de valeurs dans le tableau, qui est 7, donc ce qui est faux
  • Si k> m // si 2> 5, ce qui est faux

Donc, cette fonction affiche la ligne 3. Ligne 3 dit:

  • retour a[k]qui est ce a[2]qui est la deuxième valeur du tableau, qui est 6. Alors , prenez 6 et l' ajouter à(2+1, 5, a[1].....,a[n])

Est - ce que je l' ai fait correct là - bas? Si oui, comment pourrais - je savoir ce que a[n]est? Suis - je censé être trouver cela? Quel serait le résultat final de tout cela?

Créé 03/09/2010 à 04:44
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
2

Réponse simple: cette fonction retourne la somme de tous les nombres a [k], a [k + 1], ... un [m].

Ce que vous faites est correct jusqu'à présent. Le « n » est juste un espace réservé qui signifie que le dernier élément du tableau. Donc , si votre tableau d'entrée est {5,6,2,3,4,8,2}, n = 7( la cause de votre avoir sept éléments), et a[n] = 2.

Mais pourquoi il retourne la somme de tous les nombres a [k], a [k + 1], ... un [m], vous devez savoir pour vous-même. Il suffit de continuer votre analyse. :)

Créé 03/09/2010 à 04:54
source utilisateur

voix
1

Alors, prenez 6 et l'ajouter à (2 + 1, 5, un [1] ....., un [n])

Prenez 6 et l' ajouter à Foo (2 + 1, 5, un [1] ....., un [n]). Il est une fonction récursive. Vous devez évaluer à nouveau la fonction avec k = 3 et m = 5.

Créé 03/09/2010 à 04:56
source utilisateur

voix
0

Je pense que vous êtes confus parce que votre pseudo ressemble à un code réel pour moi. Je peux me tromper, mais nous appris à écrire différemment pseudocode, en utilisant des phrases simples en anglais.

Créé 03/09/2010 à 04:56
source utilisateur

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