鱼C论坛

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

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

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

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

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

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

  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>斐波那契递归</title>
  8.     <script>
  9.         function fib(i) {
  10.             if (i == 1 || i == 2) {
  11.                 return 1;
  12.             } else {
  13.                 return fib[i - 1] + fib[i - 2];
  14.             }
  15.         }
  16.         fib(10);//调用第十项
  17.     </script>
  18. </head>

  19. <body>

  20. </body>

  21. </html>
复制代码


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

  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>斐波那契不递归</title>
  8.     <script>
  9.         function fib(n) {
  10.             var f1 = 1,
  11.                 f2 = 1,
  12.                 f3;
  13.             for (var i = 3; i <= n; i++) {
  14.                 f3 = f1 + f2;
  15.                 f1 = f2;
  16.                 f2 = f3;
  17.             }
  18.             return f3;
  19.         }
  20.         fib(10);//调用第十项
  21.     </script>
  22. </head>

  23. <body>

  24. </body>

  25. </html>
复制代码


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

谢谢你的热心解答!!^_^()
最佳答案
2021-4-21 13:31:00
真晕,函数后面跟个方括号,也不知道你在哪抄的代码

  1. <script>
  2.         function fib(i) {
  3.             if (i == 1 || i == 2) {
  4.                 return 1;
  5.             } else {
  6.                 return fib(i - 1) + fib(i - 2);
  7.             }
  8.         }
  9.         alert(fib(10));
  10.     </script>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-21 12:07:12 From FishC Mobile | 显示全部楼层
我也没看到有输出语句呢??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 13:31:00 | 显示全部楼层    本楼为最佳答案   
真晕,函数后面跟个方括号,也不知道你在哪抄的代码

  1. <script>
  2.         function fib(i) {
  3.             if (i == 1 || i == 2) {
  4.                 return 1;
  5.             } else {
  6.                 return fib(i - 1) + fib(i - 2);
  7.             }
  8.         }
  9.         alert(fib(10));
  10.     </script>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  1. function fib(n,a1 = 1,a2 = 1){
  2.     if(n==1||n==2){
  3.         return a2;
  4.     }
  5.     return fib(n-1, a2, a1 + a2);
  6. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-21 13:44:21 | 显示全部楼层
试了一下 你这个fib(100)就把我卡死了  这个递归完全不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

难道调用时候不一起输出的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

如果只输出10呢?
还有那个n是可以后面调用时候赋值是吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

对哄,我函数体里面也没输出,调用也没输出,傻了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢提醒啦,因为我们那个例题样本是这么写的,我就试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

所有编程语言调用函数时都是用小括号,没有用中括号的,中括号后面一般跟索引一类的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

对,我发现那个()写出[]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-2 06:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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