Jednoduše Pseudokód Otázka

hlasů
1

Jsem nový psuedocode a mám potíže uvedení všechny kousky dohromady:

Zde je definice funkce pojmenované foo, jejichž vstupy jsou dvě celá čísla a řada čísel 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])

Předpokládejme, že vstupní čísla jsou k=2a m=5a vstupní pole obsahuje [5, 6, 2, 3, 4, 8, 2]. Jakou hodnotu má Foo vrátit? Pomocí sumační notace, dát obecný vzorec pro to, co Foo počítá.

Ten dělá moje hlava bolí. Tady je to, co jsem dělal doposud:

Řádek 2 má tři podmíněné příkazy:

  • Pokud je k <1 //, pokud 2 <1..this je falešný
  • Pokud m> n // pokud 5 je větší, než množství hodnot v matici, která je 7, takže to je falešný
  • Pokud k> m // pokud 2> 5, to je falešný

Takže tato funkce se zobrazí řádek 3. Řádek 3 říká:

  • return a[k], který je a[2], což je druhá hodnota z pole, což je 6. Tak se 6 a přidejte jej do(2+1, 5, a[1].....,a[n])

Je to, co jsem udělal správné tam nahoře? Pokud ano, jak to mám vědět, co a[n]je? Mám být zjištění, že? Jaký by měl být konečný výsledek toho všeho?

Položena 03/09/2010 v 04:44
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
2

Jednoduchá odpověď: tato funkce vrací součet všech čísel a [K], [K + 1], ... a [m].

To, co děláte, je správné tak daleko. „N“ je pouze zástupný symbol znamenající poslední prvek pole. Takže pokud váš vstup je pole {5,6,2,3,4,8,2}, n = 7(způsobí, že vaše mít sedm prvky), a a[n] = 2.

Ale proč se vrací součet všech čísel a [K], a [k + 1], ... a [m], měli byste si zjistit sami. Jen pokračujte s analýzou. :)

Odpovězeno 03/09/2010 v 04:54
zdroj uživatelem

hlasů
1

Tak se 6 a přidat ji do (2 + 1, 5, a [1] ....., a [n])

Take 6 a přidat ji do Foo (2 + 1, 5, a [1] ....., a [n]). Je to rekurzivní funkce. Budete muset znovu vyhodnotit funkce s k = 3 a m = 5.

Odpovězeno 03/09/2010 v 04:56
zdroj uživatelem

hlasů
0

Myslím, že jste zmateni, protože vaše pseudocode vypadá jako skutečný kód pro mě. Možná se mýlím, ale my jsme učili psát pseudokódu jinak, pomocí prostého anglické fráze.

Odpovězeno 03/09/2010 v 04:56
zdroj uživatelem

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