递归实现斐波那契
本帖最后由 贝壳头 于 2021-11-25 16:07 编辑为什么 在 I=6
fun a-1 + func a-2 返回值却是8?
它们内部怎么计算的?为什么和是8
参数a-1 等于5、参数a-2等于4么?
<?php
//利用递归实现前10个斐波那契数列
//分析:1 1 2 3 5 8 13 21 34 55 为前十个斐波那契数列
//第一个数 为1 第二个数为 1 第三个数 前两个数相加之和
function fun($a)
{
if ($a==1||$a==2)//如果是第一个数或者是第二个数那么就输出1。
{
return 1 ;
}
return fun($a-1)+fun($a-2);//如果不是第一个数或者第二个数那么就输出前两个数之和。
}
for($i=1;$i<=10;$i++)。i 等于 6
{
echo fun($i).' ';
}
?>
你根据什么说 I = 6 时,返回 8 不对? jackz007 发表于 2021-11-25 15:02
你根据什么说 I = 6 时,返回 8 不对?
10以内的斐波那契数列啊、
当执行到第六次的时候 i不就等于6了么?
传递的实参
贝壳头 发表于 2021-11-25 15:53
10以内的斐波那契数列啊、
当执行到第六次的时候 i不就等于6了么?
传递的实参
你自己都列出来了斐波那契数列的前 10 项: 1 1 2 3 5 8 13 21 34 55,第 6 项分明就是 8 啊。
jackz007 发表于 2021-11-25 15:57
你自己都列出来了斐波那契数列的前 10 项: 1 1 2 3 5 8 13 21 34 55,第 6 项分明就是 8 啊。
...
这是前两个数的和啊、我想知道它们的和为什么是8,内部是怎么计算的 贝壳头 发表于 2021-11-25 15:58
这是前两个数的和啊、我想知道它们的和为什么是8,内部是怎么计算的
递推懂不懂?
1 , 1->1 + 1 = 2 由 1、2 项生出第 3 项
1 , 2->1 + 2 = 3 由 2、3 项生出第 4 项
2 , 3->2 + 3 = 5 由 3、4 项生出第 5 项
3 , 5->3 + 5 = 8 由 4、5 项生出第 6 项 jackz007 发表于 2021-11-25 16:14
递推懂不懂?
1 , 1->1 + 1 = 2 由 1、2 项生出第 3 项
1 , 2->1 + 2 = 3 ...
第一次接触、理解能力比较差,6-1等于五、6-2等于4不应该是这样的吗 贝壳头 发表于 2021-11-25 16:31
第一次接触、理解能力比较差,6-1等于五、6-2等于4不应该是这样的吗
怎么又出来减法了?从 1、1 开始,向后做加法。 jackz007 发表于 2021-11-25 16:33
怎么又出来减法了?从 1、1 开始,向后做加法。
是从最底层返回每次加一吗? 本帖最后由 jackz007 于 2021-11-25 17:11 编辑
不是加1,是前两项相加得到后一项。6 楼写的那么清楚,居然看不懂???
页:
[1]