Вопрос по информатике:
ОЧЕНЬ СРОЧНО, ПОМОГИТЕ, ПОЖАЛУЙСТА!
Ниже записан рекурсивный алгоритм F. Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?
procedure F (n:integer);
begin
if n > 2 then begin
writeln (n);
F (n-3);
F (n-4)
end
end;
- 04.08.2015 21:23
- Информатика
- remove_red_eye 4041
- thumb_up 23
Ответы и объяснения 1
1) procedure F (n:integer);
2) begin
3) if n > 2 then begin
4) writeln (n);
5) F (n-3);
6) F (n-4)
7) end
8) end;
-первый вызов- со входным параметром n=10
-в строке 3 проверяется, что n больше двух,
-так как n действительно больше двух, то выполняются три следующие строки № 4,5,6 (а строка 7 -это указатель конца блока, выполняемого при истинности проверки)
-строка 4 печатает значение n, то есть 10
-строка 5 вызывает этот алгоритм вновь, со входным параметром 7
-строка 6 опять вызывает алгоритм, со входным параметром 6
И в каждом вызове будут ещё два вызова, со входными параметрами на три и четыре меньше, чем был
И так далее, каждый вызов будет вновь вызывать алгоритм, и печатать n до тех пор, пока n будет больше двух.
итак, получим ветвление вызовов, и вот значение n в каждом из них:
10
7 6
4 3 3 2
1 0 0 -1 0 -1
но, не все из этих n будут напечатаны, а только те, которые больше двух. если по порядку, то вот что будет напечатано:
10
7
4
3
6
3
сумма всех этих чисел равна 33
Ответ: 33.
- 06.08.2015 00:29
- thumb_up 30
Знаете ответ? Поделитесь им!
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует? Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие вопросы в разделе Информатика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи - смело задавайте вопросы!
Информатика — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации с применением компьютерных технологий, обеспечивающих возможность её использования для принятия решений.