Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Функция Odd(X) принимает значение истина при нечетном аргументе X.
-> F(26) = F(26 div 2) + 2 = F(13) + 2, т.к. аргумент четный;
-> F(13) = F(13*3 + 1) + 1 = F(40) + 1, т.к. аргумент нечетный;
-> F(40) = F(40 div 2) + 2 = F(20) + 2, т.к. аргумент четный;
-> F(20) = F(20 div 2) + 2 = F(10) + 2, т.к. аргумент четный;
-> F(10) = F(10 div 2) + 2 = F(5) + 2, т.к. аргумент четный;
-> F(5) = F(5*3 + 1) + 1 = F(16) + 1, т.к. аргумент нечетный;
-> F(16) = F(16 div 2) + 2 = F(8) + 2, т.к. аргумент четный;
-> F(8) = F(8 div 2) + 2 = F(4) + 2, т.к. аргумент четный;
-> F(4) = F(4 div 2) + 2 = F(2) + 2, т.к. аргумент четный;
-> F(2) = F(2 div 2) + 2 = F(1) + 2, т.к. аргумент четный;
-> F(1) = 0, дошли до не рекурсивной ветки. Начинаем возврат, подставляя результаты внутренних вызовов (показано стрелками):
<- F(1) = 0,
<- F(2) = F(1) + 2 = 0 + 2 = 2;
<- F(4) = F(2) + 2 = 2 + 2 = 4;
<- F(8) = F(4) + 2 = 4 + 2 = 6;
<- F(16) = F(8) + 2 = 6 + 2 = 8;
<- F(5) = F(16) + 1 = 8 + 1 = 9;
<- F(10) = F(5) +2 = 9 + 2 = 11;
<- F(20) = F(10) + 2 = 11 + 2 = 13;
<- F(40) = F(20) + 2 = 13 + 2 = 15;
<- F(13) = F(40) + 1 = 15 + 1 = 16;
<- F(26) = F(13) + 2 = 16 + 2 = 18.
Ответ: F(26) = 18.
Дата публикования: 2015-01-14; Прочитано: 229 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!