千家信息网

基于JS递归函数细化的示例分析

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章将为大家详细讲解有关基于JS递归函数细化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。程序调用自身的编程技巧称为递归( recursion)。一个
千家信息网最后更新 2025年01月16日基于JS递归函数细化的示例分析

这篇文章将为大家详细讲解有关基于JS递归函数细化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

程序调用自身的编程技巧称为递归( recursion)。

一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。用递归思想写出的程序往往十分简洁易懂。

一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

注意:

(1) 递归就是在过程或函数里调用自身;

(2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。

递归算法一般用于解决三类问题:

(1)数据的定义是按递归定义的。(Fibonacci函数)

(2)问题解法按递归算法实现。(回溯)

(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)

递归的缺点:

递归算法解题的运行效率较低。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。

递归函数趣味实例:

1、 古典问题--有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第三年每个月的兔子总数为多少?(提示:兔子的规律为数列1,1,2,3,5,8,13,21....)

 class Program {  static void Main(string[] args)  {   Program p = new Program();   Console.WriteLine(p.tuzi(7));  }  public int tuzi(int n)   {   if (n == 1 || n == 2)   {    return 1;   }   else    {    return tuzi(n - 1) + tuzi(n - 2);   }  } }

2、 趣味问题--年龄。有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?用递归算法实现。

class Program {  static void Main(string[] args)  {   Program p = new Program();      Console.WriteLine( p.age(5));  }  ///   /// 递归法求岁数  ///   /// 有几个人  ///   int age(int n)  {   int c;   if(n==1)    return 10;     else   {    c = age(n-1)+2;    return c;   }   }

3、 趣味问题--猴子吃桃。海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?
代码:

class Program {  static void Main(string[] args)  {      Program p = new Program();      Console.WriteLine( p.PeachNumber(5));     }  ///   /// 递归法求桃子数  ///   ///   ///   int PeachNumber(int n)   {   if (n == 1)   {    //最后一个是至少是六个    return 6;   }   else    {    return (PeachNumber(n - 1) + 1) * 5;   }  }

关于"基于JS递归函数细化的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

递归 个人 问题 兔子 函数 猴子 桃子 条件 程序 算法 过程 篇文章 趣味 边界 示例 分析 代码 岁数 数据 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机网络技术基础多选题 渝北区提供软件开发服务特点 崇明区信息网络技术报价 拓商科技专注互联网创业 网络技术在娱乐中的未来 黄浦区防水网络技术商家 公安部关于网络安全的法规 华为服务器延保 服务器拆机硬盘推荐 网络安全宣传周活动总结高中 加强单位网络安全管理制度 海南网络技术服务参考价 苏州戴尔服务器r230 南海软件开发培训机构 常州软件开发销售价格 智联互联网络技术专业 安庆医疗软件开发要多少钱 舟山数据网络技术优势 数据库运行过程中用什么 新鹿鼎记游戏服务器获取不到咋办 广州博睿网络技术有限公司 嵌入式系统使用什么数据库 工信部网络安全技术试点示范 网络安全法在法律中所处的 mysql父子关系数据库 csc网络安全资质认证 大数据库需要水制冷吗 对计算机网络技术的认识 软件开发应该选什么语言 oracle数据库左匹配
0