Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Рекурсивный алгоритм |
Автор: Shurman38 6.7.2007, 21:00 |
n + 4, if 1<=n<=10 f(n){ g(n-1)-n, then 2n, if 1<=n<=10 g(n)={ f(n-1)-1, then n=13 И ещё нужно отобразить содержимое stack при каждом вызове. Как её решать? |
Автор: Shurman38 7.7.2007, 16:16 |
Да, по ходу я не там, где надо тему запостил. Извиняюсь. По идее мне нужна суть решения, в смысле язык програмирования не важен. В следующий раз буду внимательней. |
Автор: LSD 7.7.2007, 23:06 |
Модератор: флейм - удалил. Тема перемещена из Java: Общие вопросы |
Автор: SoWa 7.7.2007, 23:40 |
Ну будет у тебя три разных итерации для 13 12 11, и 10 одинаковых, если у тебя n будет уменьшаться в ходе работы. Если я конечно правильно понял: если n в отрезке 0;10 то n +4. Если нет- то переходим к g. Так? |
Автор: maxim1000 7.7.2007, 23:53 |
так а что, собственно, нужно сделать? алгоритм вычисления функций тут уже написан что касается стека, то тут уже зависит от того, на чём всё это будет реализовано (даже на одном и том же языке для разных компиляторов, по идее, может получиться немного разное содержимое стека) |
Автор: Shurman38 8.7.2007, 01:46 |
Чему равна f и ход решения. Я вообще не пойму, как эту рекурсию решать. А содержание стэка не для какого-нить языка конкретно, а просто обобщенно. |
Автор: SoWa 8.7.2007, 05:53 |
Хехе, долго не понимаешь. Бери f и подставляй туда 13. Получишь переход к g уже в точке 12. Из g вернешься в f с точкой 11, с ней обратно в g и потом останутся на каждом шаге зависимости 2n. Берешь бумажку и считаешь. ![]() |
Автор: Shurman38 8.7.2007, 14:18 |
Какие зависимости 2n? Можете подумать, что я тупой, но я ничего не могу понять. Добавлено через 12 минут и 41 секунду n + 4, if 1<=n<=10 f(n){ g(n-1)+n, then -- 2n, if 1<=n<=10 g(n)={ f(n-1)-1, then Найти f(13) Неправильно условие написал. |
Автор: Shurman38 8.7.2007, 14:46 |
f(13)=g(12)+13 =f(11)-12+13 =g(10)+11-12+13 =f(9)-10+11-12+13 =g(8)+9-10+11-12+13 =f(7)-8+9-10+11-12+13 =g(6)+7-8+9-10+11-12+13 =f(5)-6+7-8+9-10+11-12+13 Дальше f(5) лежит в отрезке между 1 и 10, следовательно f(5) равна 5+4. И того:5+4-6+7-8+9-10+11-12+13=19 А где 2n должна сработать? Или я неправильно посчитал? |
Автор: maxim1000 8.7.2007, 17:43 |
уже тут нужно было использовать g(n)=2n, ведь 1<=n<=10 |
Автор: Shurman38 8.7.2007, 22:57 |
Это почему? 2n=2*10=20, а это уже не в отрезке 1<=n<=10. |
Автор: maxim1000 9.7.2007, 12:07 |
так не 2n ведь надо проверять на вхождение в отрезок, а n |
Автор: Shurman38 9.7.2007, 13:29 |
f(13)=g(12)+13 =f(11)-12+13 =g(10)+11-12+13 Дальше g(10) лежит в отрезке между 1 и 10, следовательно g(10) равна 2n=10*2=20. Следовательно 20+11-12+13=32 А где должна n+4 сработать? |
Автор: Artemios 9.7.2007, 13:54 |
n+4 сработает, если будешь считать например f(12) |
Автор: SoWa 9.7.2007, 20:38 |
Ты проверяешь первое условие, делаешь, а потом еще и второе. Зачем? |
Автор: Shurman38 10.7.2007, 14:03 |
Всё, разобрался. Всем огромное спасибо! |