Просто вопрос псевдокода - PullRequest
       0

Просто вопрос псевдокода

1 голос
/ 03 сентября 2010

Я новичок в psuedocode, и у меня проблемы с соединением всех частей:

Вот определение функции с именем 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=2 и m=5, а входной массив содержит [5, 6, 2, 3, 4, 8, 2]. Какое значение возвращает Foo? Используя обозначение суммирования, дайте общую формулу для того, что вычисляет Foo.

От этого у меня болит голова. Вот что я сделал до сих пор:

В строке 2 есть три условных выражения:

  • Если k <1 //, если 2 <1., это неверно </li>
  • Если m> n //, если 5 больше, чем количество значений в массиве, которое равно 7, то это неверно
  • Если k> m //, если 2> 5, это неверно

Таким образом, эта функция отобразит строку 3. В строке 3 написано:

  • return a[k], равное a[2], которое является вторым значением массива, равным 6. Поэтому возьмите 6 и добавьте его к (2+1, 5, a[1].....,a[n])

Что я сделал там правильно? Если так, как я узнаю, что такое a[n]? Я должен найти это? Каков будет конечный результат всего этого?

Ответы [ 3 ]

2 голосов
/ 03 сентября 2010

Простой ответ: эта функция возвращает сумму всех чисел a [k], a [k + 1], ... a [m].

То, что вы делаете, пока правильно,«N» - это просто заполнитель, означающий последний элемент массива.Так что если ваш входной массив равен {5,6,2,3,4,8,2}, n = 7 (потому что у вас есть семь элементов) и a[n] = 2.

Но почему он возвращает сумму всех чисел a [k], a [k +1], ... а [м], вы должны выяснить сами.Просто продолжайте анализ.:)

1 голос
/ 03 сентября 2010

Итак, возьмите 6 и добавьте к (2 + 1, 5, a [1] ....., a [n])

Возьмите 6 и добавьте Foo (2 + 1, 5, a [1] ....., a [n]).Это рекурсивная функция.Вы должны снова оценить функцию с k = 3 и m = 5.

0 голосов
/ 03 сентября 2010

Я думаю, что вы сбиты с толку, потому что ваш псевдокод для меня выглядит как настоящий код. Я могу ошибаться, но нас учат писать псевдокод по-другому, используя простые английские фразы.

...