![]() #айнидсомбадихелп #янепрогерятолькоучусь
Попалась маленькому глупому школьнику задачка. С виду простая, но что-то не решилась. "При каком значении b будет 8 рекурсивных вызовов функции f: public int f (int b) { if (b <= 1) { return b; } return f(b/2) + f(b-1); }" Вот хоть убейте, не понимаю, почему b = 4. Пы.Сы. я ещё в первой строке поста признала, что я глупый школьник. Не надо мне это повторять. 24 марта 2016
|
![]() |
|
>я ещё в первой строке поста признала, что я глупый школьник. Не надо мне это повторять.
Брандмауэр Windows включен. |
![]() |
ДНИЩE--ЫЫЫЫ
|
![]() |
|
edzidbear
А почему от 2 идёт только 1 ветвь? Должно же быть и 2/2, и 2-1... Или я чего-то не понимаю? |
![]() |
ДНИЩE--ЫЫЫЫ
|
![]() |
Ластро
|
> let f b = if b <= 1 then 0 else 2 + f (b`div`2) + f (b-1)
> map (i -> (i, f i)) [0..10] [(0,0), (1,0), (2,2), (3,4), (4,8), (5,12), (6,18), (7,24), (8,34), (9,44), (10,58)] |