今天在写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这种动态语言真的受不了一点点的错误。无提示,无报警。一旦有错,想破脑袋也想不到。
分享到:
相关推荐
自己调用自己 递归 – 德罗斯特效应 递归 – 定义 递归:程序调用自身 形式:在函数定义有直接或间接 调用自身 递归 - 阶乘 def p(n): x = 1 i = 1 while( i ): x = x * i i= i + 1 return x n = input("请输入一个...
有返回值函数中至少应有一个return语句。 在C程序中,一个函数的定义可以放在任意位置, 既可放在主函数main之前,也可放在main之后。例如例1.3中定义了一个max 函数,其位置在main之后, 也可以把它放在main之前。...
我们在使用PHP递归时,会遇到各种各样的问题,其中比较令人苦恼的是有关PHP递归返回值时出现的问题。其实细细想想这是一个很简单的问题。可就是这个简单的问题困扰了半个下午。问题出在递归函数的返回值上。 这是...
一. lamda匿名函数 为了解决一些简单的... 函数的参数可以有多个. 多个参数之间用逗号隔开 2. 匿名函数不管多复杂. 只能写一行, 且逻辑结束后直接返回数据 3. 返回值和正常的函数一样, 可以是任意数据类型
Python基础知识总结笔记(四)函数 python中的函数 函数中的参数 变量作用域 偏函数PFA 递归函数 高阶函数 BIFs中的高阶函数 匿名函数lambda ...有返回值:return返回的是对象,(如返回对象数>1返回元组)
尾调用是函数式编程里比较重要的一个概念,尾调用的概念非常简单,一句话就能说清楚,它的意思是在函数的执行过程中,如果最后一个动作是一个函数的调用,即这个调用的返回值被当前函数直接返回,则称为尾调用,如下...
除非不可避免,如要调用malloc()函数时要用的void型指针转换成指定类型指针。 四、标准输入输出流 在C语言中,输入输出是使用语句scanf()和printf()来实现的,而C++中是使用类来实现的。 #include iostream.h ...
和同学们一起学习回忆以前的知识,第一次上课,...函数体及函数返回值 函数的调用(作用域) 匿名函数 局部静态变量 递归函数 迭代 ..............................................................................
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 继承基础 ...
当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。 由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来...
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 Basic 1、Javascript 概述(了解) ... 调用函数时,所传递的参数列表,称之为"实参(实际参数)" 3、练习 1、定义一个函数 change ,该函数中接收两个参数(a,b) 2、在函数体中,如果 a 大于 b的话...
函数可以是递归的(对于使用声明允许的范围)。 10. compound_stmt -> { local_declarations statement_list } 复合语句由用花括号围起来的一组声明和语句组成。复合语句通过用给定的顺序执行语句序列来执行。局部声明...
2、在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern “C”? 答:C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为: void foo(int x, int...
通常,递归函数不应该被声明为内联的(译者注:递归调用堆栈的展开并不像循环那么简单,比如递归层数在编译时可能是未知的,大多数编译器都不支持内联递归函数)。析构函数内联的主要原因是其定义在类的定义中,为了...
options.recursivetype: Booleandefault: true是否对目录递归调用。options.ignoretype: string or array or regex or function排除特定的文件,支持字符串,正则,函数(返回值是被排除的文件),例如://...
• sample07.htm 递归调用函数(使用临时的函数名) • sample08.htm 传递参数的方法 • sample09.htm 传递参数个数多于函数定义的参数个数 • sample10.htm 传递参数个数少于函数...
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介绍与正则表达式...
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 ...