FUNCTION F(X:integer):integer;
BEGIN
IF X<=1 THEN F:=X
ELSE IF ODD(X) THEN F:=F(5*X+1)+1
ELSE F:=F(X div 6)+1;
END
значение функции при х=46 будет 5
(нужно объяснить почему ,как работает функция)
заранее спасибо
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
нужно понять функцию, рекурсивная ф-я |
Jenkins |
Сообщение
#1
|
Manowar Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: CaHek Репутация: 0 |
значение функции при х=46 будет 5 (нужно объяснить почему ,как работает функция) заранее спасибо -------------------- Into Glory Ride
|
Jenkins |
Сообщение
#2
|
Manowar Группа: Пользователи Сообщений: 14 Пол: Мужской Реальное имя: CaHek Репутация: 0 |
т.е. ,насколько я понял ,если рекурсивная ф-я имеет вид
if x <= Y then f(x):=A ,где "A" может быть числом или выражением ,а Y - числом ,то : 1:находим кол-во шагов (k), т.е. ПО_ДРУГОМУ : вычисляются все члены последовательности {a1 ,a2 ,a3 ,... ,a(n-1) ,an } (n=k+1) в которой a(n-1)=f(an) если n>3 НО в этой последовательности f(a2) <= Y a1 = A (при условия что f(a2) <=Y) затем составляется другая последовательность ,состоящая из n элементов : {b1 ,b2 ,... ,bn } ,в которой b1=a1=A , b2=g(b1) ,bn=g(b(n-1)) , и ,в конце концов f(x) принимает значение bn . если в условии будет стоять "больше" , то нужно менять f на обратную ей ф-цию (и g тоже на обратную ,НАПРИМЕР ,если g(f(x))=2*f(x) ,то ф-я ,обратная g ,будет "1/2(f(x))" ). ??????????????????????????????????????????????????????????????????????????????????????????????????????????? Сообщение отредактировано: volvo - -------------------- Into Glory Ride
|
Текстовая версия | 4.05.2024 14:03 |