Python тілінде рекурсивті функция берілген:
def f(n):
if n < 3:
return n
return f(n - 1) + 2 * f(n - 3)
print(f(6)) орындалғаннан кейін бағдарлама қандай мәнді шығарады?
Жауап пен талдауды көрсетуЖауап пен талдауды жасыру
Дұрыс жауап
- D12
Талдау
Базалық жағдай: n < 3 болғанда функция n мәнін қайтарады, сондықтан f(0) = 0, f(1) = 1, f(2) = 2. Одан әрі f(n) = f(n-1) + 2·f(n-3) формуласы бойынша: f(3) = f(2) + 2·f(0) = 2 + 0 = 2; f(4) = f(3) + 2·f(1) = 2 + 2 = 4; f(5) = f(4) + 2·f(2) = 4 + 4 = 8; f(6) = f(5) + 2·f(3) = 8 + 4 = 12. «8» — бұл f(5) мәні, «16» f(n-3) орнына f(n-2) шақырғанда шығады, «18» f(0) = 1 деп алғанда шығады. Дұрыс жауап — «12».