288 / 93 / 11
Регистрация: 29.05.2011
Сообщений: 2,403
|
||||||
1 | ||||||
Задача. Программа вычисления значения F(n)21.01.2024, 01:45. Показов 1072. Ответов 13
Метки нет (Все метки)
Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:
F(n)=1 при n<=2; F(n)=F(n-1)+3*F(n-2) при n>2. Напишите программу вычисления значения функции F(n). Мое решение:
0
|
21.01.2024, 01:45 | |
Ответы с готовыми решениями:
13
Программа для вычисления значения функции Программа для вычисления значения выражения. Программа для вычисления значения функции Программа для вычисления значения функции |
Модератор
|
||||||
21.01.2024, 06:46 | 2 | |||||
Bazaroff, по-моему только нужно:
1
|
Модератор
|
||||||
21.01.2024, 09:22 | 3 | |||||
А можно и так (см.рекурсия):
1
|
288 / 93 / 11
Регистрация: 29.05.2011
Сообщений: 2,403
|
|
21.01.2024, 09:47 [ТС] | 4 |
bormant, ваш код работает некорректно.
Добавлено через 5 минут Он проводит вычисления над значениями аргументов, а не над значениями функции F(n). С момента n>=3. Имхо.
0
|
vlisp
|
21.01.2024, 10:23
#5
|
Не по теме: оставлю это тут
0
|
Модератор
|
||||||
21.01.2024, 11:40 | 6 | |||||
Проверяли? Сомневаюсь.
Код
Аргумент Результат из #1 Результат из #3 Отличие 3 4 4 нет 4 7 7 нет ... Добавлено через 18 минут Действительно проводит: n-1, n-2 -- это вычисление новых аргументов функции F. Что такое f(n-1), f(n-2)? Это вызовы функции F с соответствующими аргументами => каждый вызов будет вычислен и возвратит значение, из которых и будет вычислено значение F(n) как F(n-1) + 3 * F(n-2) при n>2. Для наглядности это можно было бы переписать так:
1
|
288 / 93 / 11
Регистрация: 29.05.2011
Сообщений: 2,403
|
|
21.01.2024, 11:50 [ТС] | 7 |
Именно.
Как видно, F(4)=7. Ваш код утверждает, что 10. F(6)=40. Код - 31. F(7)=97. Код - 46.
0
|
288 / 93 / 11
Регистрация: 29.05.2011
Сообщений: 2,403
|
|
21.01.2024, 11:54 [ТС] | 8 |
Мой код, по крайней мере до F(7), именно то и показывает.
0
|
Модератор
|
||||||
21.01.2024, 18:16 | 9 | |||||
Где?
Код
n: 4 7
Код
1 2 3 4 5 6 7 8 9 1 1 4 7 19 40 97 217 508 Плохо проверяли. Надо повторить.
1
|
288 / 93 / 11
Регистрация: 29.05.2011
Сообщений: 2,403
|
|
21.01.2024, 18:28 [ТС] | 10 |
0
|
288 / 93 / 11
Регистрация: 29.05.2011
Сообщений: 2,403
|
|
21.01.2024, 21:59 [ТС] | 12 |
bormant, тыщу извинений!
Добавлено через 1 час 18 минут bormant, не возьму в толк, а как это работает? То есть, конструкцию f:=f(n-1)+3*f(n-2) Pascal понимает буквально точно так, как если бы это было написано на бумаге? F(n)=F(n-1)+3*F(n-2)? В учебнике не приведено такого материала, как функцию представить рекурсивной.
0
|
626 / 946 / 150
Регистрация: 10.08.2015
Сообщений: 5,042
|
|
21.01.2024, 22:13 | 13 |
носки когда снимаешь, выворачиваешь их. вот примерно так это работает. если развернуть на плоскость, то это дерево. одна ветка для н-1, другая для н-2.
бери карандаш, садись и рисуй
0
|
Модератор
9875 / 5243 / 3306
Регистрация: 17.08.2012
Сообщений: 16,013
|
|
21.01.2024, 23:14 | 14 |
Bazaroff, ученье - свет, а неучёных - тьма. Грызите гранит науки. Рекурсия... Она поначалу несколько сложна для понимания. Функция, если она не может вычислить саму себя, вызывает саму себя с новыми аргументами. И вызовы происходят до тех пор, пока функция не сможет вычислить саму себя. Правда, здорово? У bormant в сообщении #2 окончательное вычисление происходит в строке #3.
Для вызова f(4) всё происходит так: Код
f(4) [n=4]: if n<3 then f:=1 {не выполняется} else f:= f(n-1) [f(3)]? -> f(3) [n=3]: if n<3 then f:=1 {не выполняется} else f:= f(n-1) [f(2)]? -> f(2) [n=2]: if n<3 then f:=1 (f(2) вычислено) +3* f(n-2) [f(1)]? -> f(1) [n=1]: if n<3 then f:=1 (f(1) вычислено) (f(3) вычислено) +3* f(n-2) [f(2)]? -> f(2) [n=2]: if n<3 then f:=1 (f(2) вычислено) (f(4) вычислено) На самом деле, всё просто, не пугайтесь.
1
|
21.01.2024, 23:14 | |
21.01.2024, 23:14 | |
Помогаю со студенческими работами здесь
14
Программа для вычисления значения функции f (x) ее разложением в ряд Макларена: прокомментировать код Программа вычисления значения Программа вычисления значения выражения Программа вычисления значения функции Программа для вычисления значения Не пашет программа вычисления значения функции Программа вычисления значения функции на отрезке. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |