斐波那契找到第 n 项 Ruby
Fibonacci find the nth term Ruby
我了解斐波那契的工作原理,但我需要解释为什么这段代码使用 fib
与 fib
不使用
def fib(n)
return 1 if n <= 2
return fib(n-1) + fib(n-2)
end
上面的代码给出了 fib(n-1) + fib(n-2)
的正确答案
但是为什么下面的代码不起作用?
def fib(n)
return 1 if n <= 2
return (n-1) + (n-2)
end
首先,欢迎来到递归达人!
从现在开始,我打赌你总是使用如下函数:
function something()
{
//do_something
return (something)
}
称为迭代函数,函数的开始和return
但是斐波那契是介绍递归概念的好例子!
如果你了解斐波那契数列,你就会意识到一个值是由先前的值提供的
n + 1 = n / 2 这是一个套件。
考虑到这一点,一个函数可以称它为 self ,是的,你听到了,
function something()
{
something();
}
这段代码将永远调用某些东西,直到您遇到著名的错误“堆栈溢出”(此网站名称来自此错误),但稍后您会明白为什么。
现在关注 fib 会调用它自身 n 次的事实,这取决于你想要的值。
所以通过 return (n-1) + (n-2)
删除 de return fib(n-1) + fib(n-2)
你只执行这个函数“一次”,举这个例子,对于 fib 如果你需要调用 fib 函数 5 次但你只调用 fib 一次,你失败了,这不是你要的。
因此,在同一个函数中调用同一个函数,你可以领略一下什么是递归,看看google,测试一下!
我了解斐波那契的工作原理,但我需要解释为什么这段代码使用 fib
与 fib
不使用
def fib(n)
return 1 if n <= 2
return fib(n-1) + fib(n-2)
end
上面的代码给出了 fib(n-1) + fib(n-2)
但是为什么下面的代码不起作用?
def fib(n)
return 1 if n <= 2
return (n-1) + (n-2)
end
首先,欢迎来到递归达人!
从现在开始,我打赌你总是使用如下函数:
function something()
{
//do_something
return (something)
}
称为迭代函数,函数的开始和return 但是斐波那契是介绍递归概念的好例子! 如果你了解斐波那契数列,你就会意识到一个值是由先前的值提供的 n + 1 = n / 2 这是一个套件。 考虑到这一点,一个函数可以称它为 self ,是的,你听到了,
function something()
{
something();
}
这段代码将永远调用某些东西,直到您遇到著名的错误“堆栈溢出”(此网站名称来自此错误),但稍后您会明白为什么。
现在关注 fib 会调用它自身 n 次的事实,这取决于你想要的值。
所以通过 return (n-1) + (n-2)
删除 de return fib(n-1) + fib(n-2)
你只执行这个函数“一次”,举这个例子,对于 fib 如果你需要调用 fib 函数 5 次但你只调用 fib 一次,你失败了,这不是你要的。
因此,在同一个函数中调用同一个函数,你可以领略一下什么是递归,看看google,测试一下!