`

递归调用时注意对于有返回值的函数要return

阅读更多

今天在写javascript的一个函数时。用了下递归。但是一直都是返回的都是undefined。十分不解。百般思索之后终于发现问题所在。

 

在用递归时,我没有用return调用递归。

简单的说就是,

例:如下的Fibonacci数列就是返回的undefined。

 

function Fibonacci(n){
    if(n==1){
        return 1;
    }else if(n==2){
         return 1;
    }else{
        Fibonacci(n-1)+ Fibonacci(n-2);
    }
}

 

 

所以对于有返回值的函数的递归调用一定要记得加上return。一下为正确方法

function Fibonacci(n){
    if(n==1){
        return 1;
    }else if(n==2){
         return 1;
    }else{
        return Fibonacci(n-1)+ Fibonacci(n-2);
    }
}

 

郁闷啊。在这种问题上浪费了这么多的时间。

像javascript这种动态语言真的受不了一点点的错误。无提示,无报警。一旦有错,想破脑袋也想不到。

分享到:
评论

相关推荐

    python基础教程-递归函数.pdf

    自己调用自己 递归 – 德罗斯特效应 递归 – 定义 递归:程序调用自身 形式:在函数定义有直接或间接 调用自身 递归 - 阶乘 def p(n): x = 1 i = 1 while( i ): x = x * i i= i + 1 return x n = input("请输入一个...

    C语言程序设计标准教程

    有返回值函数中至少应有一个return语句。 在C程序中,一个函数的定义可以放在任意位置, 既可放在主函数main之前,也可放在main之后。例如例1.3中定义了一个max 函数,其位置在main之后, 也可以把它放在main之前。...

    PHP递归返回值时出现的问题解决办法

    我们在使用PHP递归时,会遇到各种各样的问题,其中比较令人苦恼的是有关PHP递归返回值时出现的问题。其实细细想想这是一个很简单的问题。可就是这个简单的问题困扰了半个下午。问题出在递归函数的返回值上。 这是...

    Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法

    一. lamda匿名函数  为了解决一些简单的... 函数的参数可以有多个. 多个参数之间用逗号隔开  2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据  3. 返回值和正常的函数一样, 可以是任意数据类型  

    Python基础知识总结笔记(四)函数

    Python基础知识总结笔记(四)函数 python中的函数 函数中的参数 变量作用域 偏函数PFA 递归函数 高阶函数 BIFs中的高阶函数 匿名函数lambda ...有返回值:return返回的是对象,(如返回对象数>1返回元组)

    深入理解JavaScript中的尾调用(Tail Call)

    尾调用是函数式编程里比较重要的一个概念,尾调用的概念非常简单,一句话就能说清楚,它的意思是在函数的执行过程中,如果最后一个动作是一个函数的调用,即这个调用的返回值被当前函数直接返回,则称为尾调用,如下...

    新手学习C++入门资料

    除非不可避免,如要调用malloc()函数时要用的void型指针转换成指定类型指针。 四、标准输入输出流 在C语言中,输入输出是使用语句scanf()和printf()来实现的,而C++中是使用类来实现的。 #include iostream.h ...

    php基础入门

    和同学们一起学习回忆以前的知识,第一次上课,...函数体及函数返回值 函数的调用(作用域) 匿名函数 局部静态变量 递归函数 迭代 ..............................................................................

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    13.2 有返回值的递归函数 393 13.3 按递归方式思考问题 397 13.3.1 递归设计技术 397 13.3.2 二分查找 398 13.3.3 编码 400 13.3.4 检查递归的正确性 402 13.3.5 效率 402 第14章 继承 410 14.1 继承基础 ...

    语言程序设计课后习题答案

    当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。 由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来...

    C语言讲义.doc

    9.4 MAIN函数与EXIT函数与函数的RETURN语句 46 9.5 多个源代码文件程序的编译 47 9.5.1 头文件的使用 47 9.5.2 #include与#define的意义 47 9.5.3 #ifndef与#endif 47 9.6 函数的递归 48 9.6.1 递归的过程分析 48 ...

    javascript入门笔记

    Javascript Basic 1、Javascript 概述(了解) ... 调用函数时,所传递的参数列表,称之为"实参(实际参数)" 3、练习 1、定义一个函数 change ,该函数中接收两个参数(a,b) 2、在函数体中,如果 a 大于 b的话...

    c-minus词法分析器

    函数可以是递归的(对于使用声明允许的范围)。 10. compound_stmt -> { local_declarations statement_list } 复合语句由用花括号围起来的一组声明和语句组成。复合语句通过用给定的顺序执行语句序列来执行。局部声明...

    最新名企标准通用C++面试题,

    2、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”? 答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int...

    Google C++ 编码规范

    通常,递归函数不应该被声明为内联的(译者注:递归调用堆栈的展开并不像循环那么简单,比如递归层数在编译时可能是未知的,大多数编译器都不支持内联递归函数)。析构函数内联的主要原因是其定义在类的定义中,为了...

    Gulp的文件同步插件Gulp-File-Sync.zip

    options.recursivetype: Booleandefault: true是否对目录递归调用。options.ignoretype: string or array or regex or function排除特定的文件,支持字符串,正则,函数(返回值是被排除的文件),例如://...

    《javaScrip开发技术大全》源代码

    • sample07.htm 递归调用函数(使用临时的函数名) • sample08.htm 传递参数的方法 • sample09.htm 传递参数个数多于函数定义的参数个数 • sample10.htm 传递参数个数少于函数...

    Shell脚本学习笔记

    6.5 函数递归与创建库 116 6.5.1函数递归 116 6.5.2 创建库 116 6.6 在命令行中使用函数 117 6.6.1在命令行创建函数 117 6.6.2在.bashrc文件中定义函数 117 6.7 select命令使用 119 第7章 sed、gawk介绍与正则表达式...

    C++ Primer第四版【中文高清扫描版】.pdf

    14.8 调用操作符和函数对象 449 14.8.1 将函数对象用于标准库算法 450 14.8.2 标准库定义的函数对象 451 14.8.3 函数对象的函数适配器 453 14.9 转换与类类型 454 14.9.1 转换为什么有用 454 14.9.2 转换操作符 455 ...

Global site tag (gtag.js) - Google Analytics