鱼C论坛

 找回密码
 立即注册
查看: 2446|回复: 10

[已解决](小白)js关于斐波那契递归不递归的方法调用怎么错了?

[复制链接]
发表于 2021-4-21 11:27:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.这是递归的
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>斐波那契递归</title>
    <script>
        function fib(i) {
            if (i == 1 || i == 2) {
                return 1;
            } else {
                return fib[i - 1] + fib[i - 2];
            }
        }
        fib(10);//调用第十项
    </script>
</head>

<body>

</body>

</html>

2.这是不递归的
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>斐波那契不递归</title>
    <script>
        function fib(n) {
            var f1 = 1,
                f2 = 1,
                f3;
            for (var i = 3; i <= n; i++) {
                f3 = f1 + f2;
                f1 = f2;
                f2 = f3;
            }
            return f3;
        }
        fib(10);//调用第十项
    </script>
</head>

<body>

</body>

</html>

这两个方法运行后出现空白,什么也没有为什么呀,我也去网上找了,也是这么写,但我的第十项就是输不出。

谢谢你的热心解答!!^_^()
最佳答案
2021-4-21 13:31:00
真晕,函数后面跟个方括号,也不知道你在哪抄的代码
 <script>
        function fib(i) {
            if (i == 1 || i == 2) {
                return 1;
            } else {
                return fib(i - 1) + fib(i - 2);
            }
        }
        alert(fib(10)); 
    </script>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-21 12:07:12 From FishC Mobile | 显示全部楼层
我也没看到有输出语句呢??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 13:31:00 | 显示全部楼层    本楼为最佳答案   
真晕,函数后面跟个方括号,也不知道你在哪抄的代码
 <script>
        function fib(i) {
            if (i == 1 || i == 2) {
                return 1;
            } else {
                return fib(i - 1) + fib(i - 2);
            }
        }
        alert(fib(10)); 
    </script>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 13:39:08 | 显示全部楼层
你这个递归的性能非常差 fib(1000)会直接卡死   我发一个递归版本
function fib(n,a1 = 1,a2 = 1){
    if(n==1||n==2){
        return a2;
    }
    return fib(n-1, a2, a1 + a2);
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 13:44:21 | 显示全部楼层
试了一下 你这个fib(100)就把我卡死了  这个递归完全不行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 00:01:32 | 显示全部楼层
wp231957 发表于 2021-4-21 13:31
真晕,函数后面跟个方括号,也不知道你在哪抄的代码

难道调用时候不一起输出的?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 00:03:56 | 显示全部楼层
kogawananari 发表于 2021-4-21 13:39
你这个递归的性能非常差 fib(1000)会直接卡死   我发一个递归版本

如果只输出10呢?
还有那个n是可以后面调用时候赋值是吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 00:08:39 | 显示全部楼层
wp231957 发表于 2021-4-21 13:31
真晕,函数后面跟个方括号,也不知道你在哪抄的代码

对哄,我函数体里面也没输出,调用也没输出,傻了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-25 00:12:33 | 显示全部楼层
kogawananari 发表于 2021-4-21 13:39
你这个递归的性能非常差 fib(1000)会直接卡死   我发一个递归版本

谢谢提醒啦,因为我们那个例题样本是这么写的,我就试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-25 07:07:05 From FishC Mobile | 显示全部楼层
Cathy-Chen258 发表于 2021-4-25 00:01
难道调用时候不一起输出的?

所有编程语言调用函数时都是用小括号,没有用中括号的,中括号后面一般跟索引一类的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-26 11:17:37 | 显示全部楼层
wp231957 发表于 2021-4-21 13:31
真晕,函数后面跟个方括号,也不知道你在哪抄的代码

对,我发现那个()写出[]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 15:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表