На этом форуме отвечают на конкретные вопросы. Фраза «я не понимаю, как решать» — это не вопрос. На вопрос «как решить задачу №X» вас отошлют к материалам сайта kpolyakov.spb.ru. За бессвязный поток слов и неспособность формулировать свои мысли — бан.

Если у вас не сходится ответ на какую-то задачу, пожалуйста сразу представляйте свое «правильное» решение.
Программы "заворачивайте" в тэг [pre2]...[/pre2], при этом сохраняются все отступы и применяется моноширинный шрифт. Если у вас используется сочетание "[i]" для обозначения элемента массива или строки, ставьте пробел после открывающей скобки. Иначе система выделит все дальнейшее курсивом.

Для регистрации на форуме щелкните по ссылке «Вход-регистрация» вверху страницы. В открывшееся окошко «ник» введите свою фамилию на русском языке (например, Иванов). В окошко «пароль» введите придуманный вами пароль, состоящий из латинских букв и цифр. Поставьте галочку в окошке «зарегистрироваться, я новый участник» и нажмите кнопку «ОК».

АвторСообщение



Не зарегистрирован
ссылка на сообщение  Отправлено: 03.02.21 15:20. Заголовок: 16 №70


Здравствуйте!
1. F(0)=1
2. F(1)=2*F(0)+3*F(0)=5
3. F(2)=2*F(-1)+3*F(1)+2
4. F(-1) = -F(1), подставляем в шаг 3
5. F(2) = -2*F(1)+3*F(1)+2 = F(1)+2 = 7
6. F(3) = F(2)+2=9, F(4)=F(3)+2=11, F(5)=13, F(6)=15, F(7)=17, F(8)=19, F(9)=21, F(10)=23
7. F(20) = 43, F(30) = 63, F(40)=83, F(50)=103
8. 1+0+3 = 4
Ответ на сайте 6. Где ошибка?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 5 [только новые]







Сообщение: 362
ссылка на сообщение  Отправлено: 03.02.21 17:38. Заголовок: Ответ


Шишунов И.В. пишет:
 цитата:
2. F(1)=2*F(0)+3*F(0)=5

Правильно: F(1)=2*F(0)+3*F(0)+2=7
...
F(50)=105

Ответ: 6.
 
def f(n):
if n == 0:
return 1
if n == 1:
return 7
if n > 1:
return f(n - 1) + 2

print(f(50))


Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
ссылка на сообщение  Отправлено: 03.02.21 19:35. Заголовок: Увидел, спасибо!..


Увидел, спасибо!

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
ссылка на сообщение  Отправлено: 18.05.21 18:12. Заголовок: Что здесь не так?


Вроде все правильно, хотел просто потом подсчитать сумму цифр значения, а число не выводится

function f(n:integer):integer; 
begin
if n = 0 then f := 1
else if n > 0 then f := 2 * f(1 - n) + 3 * f(n - 1) + 2
else if n<0 then f := -f(-n);
end;
begin
write(f(50));
end.


Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 437
ссылка на сообщение  Отправлено: 18.05.21 19:08. Заголовок: Ответ


Здравствуйте, abcdefgser!


"Число не выводится" потому, что количество рекурсивных вызовов слишком велико.

Чтобы исправить ситуацию, нужно проанализировать функцию и переписать ее так:
 цитата:
 function f(n:integer):integer;  
begin
if n = 0 then f := 1;
if n = 1 then f := 7;
if n > 1 then f := f(n - 1) + 2 ;
end;
begin
write(f(50));
end.

Смотрите, например, здесь.

Спасибо: 0 
ПрофильЦитата Ответить



Сообщение: 1
ссылка на сообщение  Отправлено: 18.05.21 20:29. Заголовок: Спасибо огромное!!..


Спасибо огромное!!

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 635
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет