js函数递归

//公园里有200个桃子。猴子每天吃掉10个,挑出两个坏的扔掉,问6天后剩余桃子的数量

/*var sl = 200;

for(var i=0;i<6;i++)
{
sl = sl-12;
}

alert(sl);*/

//公园里有一堆桃子,猴子每天吃掉一半,挑出一个坏的扔掉,第6天的时候发现还剩1个桃子,问原来有多少个桃子

/*var sl = 1;

//前一天的数量 = (当前天的数量+1)*2;

for(var i=0;i<6;i++)
{
sl = (sl+1)*2;
}

alert(sl);*/

//使用函数求
//函数功能:返回第n天的桃子数量

//函数自己调自己

var sl;
function ShuLiang(n)
{
//当n等于6桃子数量为1
if(n==6)
{
sl = 1;
}
else
{
//求当天的数量
//当天的数量 = (下一天的数量+1)*2;
sl = (ShuLiang(n+1)+1)*2;
}

return sl; //返回当天的数量
}

alert(ShuLiang(0));

/*
ShuLiang(0)
{
sl = (94+1)*2; 卡住
}

*/

递归的本质是自己调自己也可以看做函数的嵌套循环

时间: 2024-08-17 09:41:00

js函数递归的相关文章

JS函数的应用 --- 立即执行函数、全局污染、闭包、沙箱、递归

一.立即执行函数 --- IIFE 立即执行函数的集中表现形式: 立即执行函数的特点: 二.JS 全局污染 为什么会造成全局污染? JS 没有块级作用域,在函数外定义的变量,均为全局变量: 全局变量过多会削弱程序的灵活性,增大了模块之间的耦合度,多人协作开发会导致变量冲突,造成环境污染. 耦合度:即模块之间的依赖关系:控制关系.调用关系.数据传递关系: 划分模块准则:高内聚低耦合 如何解决全局污染? 1. 命名空间 2. 立即执行函数(里面创建的变量,为局部变量) (function(){})(

逆战班!js基础关于函数递归

函数递归的特点: 1,函数自己调用自己 2,一般会有return 3,一般会有参数 注意: ****递归能做循环能做的一切,还能解决循环不容易解决的事 ****有时候会搞不懂递归是如何正确的实现功能的(因为有套路) 在一般的公司里面,明文禁止使用递归,但是懂得递归又是一个程序员必备的知识!!!! 至于为什么公司不允许使用递归,原因如下: 案例:计算1~100的和 使用普通循环语句: <script> function add(a) { var sum=0 for(var i = 1;i <

JavaScript (JS) 函数补充 (含arguments、eval()、四种调用模式)

1. 程序异常 ① try-catch语法    测试异常 try-catch语法代码如下: try { 异常代码;     try中可以承重异常代码, console.log("try")  出现异常代码后,正确代码不会执行 } catch (e) { console.log("e:"+e);  try中出现异常在e中展现出来 console.log("catch");  只有try中出现异常才执行这段代码 } finally { consol

js函数的内部属性---arguments,callee,caller

在接下来的几篇文章中,我大家谈谈函数的内部属性,arguments,callee,caller (1)arguments,是一个类数组对象,其中包含了传入函数的所有参数,主要用途是,保存函数的参数: 代码1: function aa(b){alert(arguments);} aa(4); function aa(a,b,c,d){alert(arguments.length);} aa(1,2,3,4); function aa(a,b,c,d){alert(arguments[2]);} a

JS函数-我调用自己试试看

前言 最近在读<JavaScript语言精粹>,对递归函数有了进一步的认识,希望总结下来: 递归是一种强大的编程技术,他把一个问题分解为一组相似的子问题,每一问题都用一个寻常解去解决.递归函数就是会直接或者间接调用自身的一种函数,一般来说,一个递归函数调用自身去解决它的子问题. "汉诺塔"经典递归问题 "汉诺塔"是印度的一个古老传说,也是程序设计中的经典的递归问题,是一个著名的益智游戏: 题目如下: 塔上有三根柱子和一套直径各不相同的空心圆盘,开始时源柱

js函数的使用

  js函数应用 [函数的声明及调用]: 1.函数声明: function 函数名(参数1,参数2,·····){ //函数体 return 结果: >>函数调用的格式: 函数名(参数1的值,参数2的值,·····) 事件调用 } 2.函数声明的几点强调: ①.函数名的声明,必须符合驼峰法则(首字母小写,之后的每个单词首字母大写): ②.参数列表,可以有参可以无参,分别为有参函数,无参函数: ③.声明函数时的参数列表叫形参列表(变量的名):调用函数是的参数列表叫实参列表(变量的值): 函数中实

js函数表达式

定义函数的方式 定义函数表达式的方法有两种,一种是函数声明,另一种是函数表达式. 函数声明的方式,关于函数声明的方式,它的一个重要的特性就是函数声明提升(function declaration hoisting),意思是在执行代码之前会先读取函数声明.这就意味着可以把函数声明放在调用它的语句后面,like this 1 sayHi();//声明函数(function declaration hoisting) 2 function sayHi(){ 3 alert("Hi!"); 4

如何编写高质量的 JS 函数(3) --函数式编程[理论篇]

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/EWSqZuujHIRyx8Eb2SSidQ作者:杨昆 [编写高质量函数系列]中, <如何编写高质量的 JS 函数(1) -- 敲山震虎篇>介绍了函数的执行机制,此篇将会从函数的命名.注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数. <如何编写高质量的 JS 函数(2)-- 命名/注释/鲁棒篇>从函数的命名.注释和鲁棒性方面,阐述如何通过 JavaScri

如何编写高质量的 JS 函数(4) --函数式编程[实战篇]

本文首发于 vivo互联网技术 微信公众号? 链接:https://mp.weixin.qq.com/s/ZoXYbjuezOWgNyJKmSQmTw 作者:杨昆 ?[编写高质量函数系列],往期精彩内容: <如何编写高质量的 JS 函数(1) -- 敲山震虎篇>介绍了函数的执行机制,此篇将会从函数的命名.注释和鲁棒性方面,阐述如何通过 JavaScript 编写高质量的函数. ?<如何编写高质量的 JS 函数(2)-- 命名/注释/鲁棒篇>从函数的命名.注释和鲁棒性方面,阐述如何通