问题来自知乎
等我写完之后发现不就是那啥啥函数,,贴上lua代码
N很大的时候,估计是抗不住了,代码还需要优化。
function banana( n )local c = 1;if n == 0 thenreturn 0elseif n == 1 thenreturn 1elseif n == 2 thenreturn 2endreturn (banana(n – 1) + banana(n – 2)) * c;endfor i = 1, 10 doprint(banana(i))end
优化后的代码:
local know = {}function banana( n )if know[n] thenreturn know[n]endlocal c = 1;if n == 0 thenknow[n] = 0return 0elseif n == 1 thenknow[n] = 1return 1elseif n == 2 thenknow[n] = 2return 2endlocal r = (banana(n – 1) + banana(n – 2)) * c;know[n] = rreturn rendfor i = 1, 50 doprint(i, banana(i))end
车到山前必有路,没路可以先开路,开路就得有乐观,