`

递归调用时注意对于有返回值的函数要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这种动态语言真的受不了一点点的错误。无提示,无报警。一旦有错,想破脑袋也想不到。

分享到:
评论

相关推荐

    C语言函数递归调用学习教案.pptx

    在递归调用中,每一级函数调用都有自己的变量,递归调用就相当于又从头开始执行函数的代码。每次函数调用都会返回一次,并且按顺序逐级返回递归。 在递归调用中,我们需要注意递归的深度和性能问题。递归调用的深度...

    C语言函数递归调用PPT课件.pptx

    在C语言中,递归调用可以通过函数的返回值来实现。例如,在函数f中调用函数f自身,直到达到某个条件为止。例如: ```c int f(int x) { if (x == 0) return 1; else return 2 * f(x - 1); } ``` 这个函数将计算x的...

    Python语言程序设计教程 北理工Python课程第6章-函数与递归-2-函数的调用和返回值 共19页.pdf

    每次函数调用自身时,它都会在新的上下文中执行,直到达到基本情况(base case),即不再进行递归调用的条件。递归函数必须有明确的基本情况和递归情况,否则会导致无限递归,最终耗尽系统资源。 递归在处理具有...

    C语言中的递归函数及其注意

    尾递归是指递归调用是函数体的最后一个操作,且返回值不依赖于递归调用的结果。这种情况下,编译器可能能够优化掉不必要的栈空间分配,降低空间复杂度。 总之,C语言中的递归函数提供了一种优雅的解决问题的方法,...

    Python语言基础:递归函数.pptx

    2. 基本情况:递归函数必须有一个或多个基本情况,这些情况可以直接返回结果,不需要进一步的递归调用。 3. 递归步骤:除了基本情况外,函数的每次调用都必须以某种方式简化问题,使它更接近基本情况。 递归函数的...

    电子科大C语言第六章函数1.ppt

    如果函数的返回值类型是void,即无返回值函数,那么不能在调用函数中使用return语句来获取返回值。否则,会出现编译错误。 函数的类型可以是int、float、char等,也可以是void,即无返回值函数。函数的类型需要和...

    11.6.01-第06章-函数.pptx

    函数的嵌套调用是指在一个函数中调用另一个函数,而递归函数是指函数调用自身的函数。匿名函数是指没有函数名的函数。 Python 中的函数可以分为四种类型:无参数,无返回值的函数;无参数,有返回值的函数;有参数...

    全国计算机二级C语言考点:函数的类型和返回值.docx

    函数的调用有几种不同的方式,包括普通调用、嵌套调用和递归调用。普通调用是最基础的形式,需要确保函数名匹配、实参数量和类型与形参一致。C语言要求函数必须先定义后调用,除非函数返回类型为int或char,这种情况...

    全国二级C语言笔试必过400题.doc

    8. 函数返回值的类型在定义函数时决定,由定义函数时的return类型指定。 9. 当数组名作为参数传递给函数时,实际传递的是数组的首地址,而不是数组的长度、元素个数或元素值。 10. C语言中数组下标的下限通常是0,...

    c语言第8章函数习题.pdf

    "C语言第8章函数习题.pdf" 本资源主要讲解C语言中的函数习题,...* 函数的调用关系可以是递归调用,也可以是非递归调用。 * 函数的调用关系取决于函数的定义和调用。 * 函数的调用关系可以影响程序的执行结果和性能。

    浅析PHP递归函数返回值使用方法

    - **返回值**:确保每次递归调用都有返回值是非常重要的,这有助于将递归的结果正确地传递回调用栈。 - **效率问题**:递归虽然简洁优雅,但可能会导致大量的函数调用开销,从而降低程序的运行效率。 #### 五、结论...

    C语言是通过函数来实现模块化程序设计的所以较大的C语PPT.ppt

    函数可以分为有返回值函数和无返回值函数两种。函数类型在定义函数时,对函数类型的说明,应与return语句中、返回值表达式的类型一致。 函数的调用 函数的调用是指在程序中使用函数名和参数列表来调用函数。函数...

    python函数设计与异常(PPT61页).pptx

    在本节中,我们将讨论函数设计的原则、函数定义、函数对象的增加和删除、函数的递归调用、尾递归等知识点。 一、函数设计原则 在编写函数时,有很多原则需要参考和遵守: 1. 不要在同一个函数中执行太多的功能,...

    嵌入式C语言培训-C编程基础-函数返回值

    当`return`语句执行时,程序控制权返回到调用者,并将返回值(如果有的话)传回。返回值可以是表达式的计算结果,例如: ```c int maxOfTwo(int a, int b) { if (a > b) return a; else return b; } ``` 4....

    19_函数调用模型_主调函数和被调用函数.zip_C语言

    3. 为了避免无限递归,必须确保所有递归调用都有终止条件。 4. 使用动态内存分配的函数要记得释放,防止内存泄漏。 通过深入理解函数调用模型,我们可以更好地组织和优化C语言程序,提升程序的效率和可读性。在...

    php递归函数中使用return的注意事项

    2. **正确的返回路径**:在递归调用之前,使用`return`语句确保返回值能够正确传递。 3. **避免副作用**:尽量减少递归函数中的副作用(如修改外部变量),这会使调试和理解函数行为变得更复杂。 4. **效率考虑**:...

    函数的递归应用

    - 当`n`大于0时,函数将`n`除以2得到`m`,然后递归调用`F(m)`,并将结果乘以`n`。 这种设计使得函数能够处理各种输入值,并基于这些条件作出相应的计算或返回值。然而,值得注意的是,该递归函数可能并不具备实际...

    C/C++语言程序中函数调用解决办法

    - **函数作为表达式的一部分调用**:在这种情况下,被调用的函数需要有一个具体的返回值。 #### 函数调用的分类 函数调用根据其性质可以进一步细分为**嵌套调用**和**递归调用**。 ##### 嵌套调用 嵌套调用是指...

    第5章函数习题1

    函数嵌套调用可以实现复杂的逻辑操作,但需要注意避免递归调用。 七、函数类型 在C语言中,函数类型可以是void、int、char、float等。函数类型需要在函数定义时指定,否则将默认为int类型。 八、系统函数 系统...

Global site tag (gtag.js) - Google Analytics