函数在内部自己调用自己是递归,需要叫上判断条件来终止递归的运行。

一.用递归求1-10的和

 if (a === 1) {return 1;}return a + fn(a - 1);}const res = fn(10);// 4+3+2+1console.log(res);

当等于10时候

10+fn(9)

10+9+fn(8)

10+9+8+fn(7)

....

10+9+8+2+...fn(1)

当a=1的时候返回一个1终止递归的运行。

二.猴子吃桃问题

一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。

这里用到了逆向思维:

设第九天还剩下x个桃子:

x/2-1=1

x=4

第几天还剩下4个桃子。

据此推理那么第八天:

(4+1)x2=10

第八天剩下10个桃子

// 设第一天剩1个

1   //第十天

4   // 第九天

10   //第八天

22    //第七天

46    //第六天

94  //第五天

190  //第四天

382  //第三天

766   //第二天

1534   //第一天

推导出:

    var a = 1;function num(n) {a++;if (a === 11) {return n;}// debuggerreturn  num((n + 1) * 2);}const res = num(1);console.log(res)

打印的结果:

不借用外部变量使用递归:

 function num(n,m) {if (m ===1) {return n;}// debuggerreturn  num((n + 1) * 2,m-1);}const res = num(1,10);console.log(res);

三.树形数据转换

  const arr = [{ 'id': '29', 'pid': '',     'name': '总裁办' },{ 'id': '2c', 'pid': '',     'name': '财务部' },{ 'id': '2d', 'pid': '2c', 'name': '财务核算部'},{ 'id': '2f', 'pid': '2c', 'name': '薪资管理部'},{ 'id': 'd2', 'pid': '',     'name': '技术部'},{ 'id': 'd3', 'pid': 'd2', 'name': 'Java研发部'}]
function fn(arr,str=''){// 这里的return是返回给函数return arr.filter(item=>{if (item.pid==str) {// 拿到第一层数据item.children=fn(arr,item.id)return true}})
}const res= fn(arr)console.log(res);

找出第一层:

重新调用函数:

传入自己的id和数组里面的进行筛选

如果和数组里面的pid相等

那么当前项的children的pid和上一项的id想等。

猴子摘桃求和------递归相关推荐

  1. 【递归与递推】猴子摘桃

    问题 A: [递归与递推]猴子摘桃 时间限制: 1 Sec  内存限制: 64 MB 提交: 41  解决: 39 [提交] [状态] [讨论版] [命题人:外部导入] 题目描述 果园里种了很多桃树, ...

  2. 猴子摘桃python代码_阿尔法python练习(4-6答案)

    文章目录4.基本数据类型判断奇偶数公倍数判断平闰年天天向上的力量第一问天天向上的力量第二问天天向上的力量第三问天天向上的力量第四问拼接最大字符删除字符插入字符回文字符串统计词量你中无我时间格式化文本进 ...

  3. 递推算法5——逆推法之猴子摘桃问题

    逆推法是根据结果推出已知条件,推算方法与顺推法类似,只是需要将结果作为初始条件向前推算.比较典型的例子是猴子摘桃和存取问题 猴子摘桃 [问题描述] 猴子第一天摘了若干个桃子,当即吃了一半,还不过瘾,又 ...

  4. 程序算法之逆推法(口算猴子摘桃问题正解、详解)

    偶然间看到有篇猴子摘桃问题的博文,问题蛮有趣的,只是他的答案令人不敢恭维.....问题如下: 有一只猴子,摘了很多桃子,他每天吃掉一些,剩下的桃子比之前的全部的一半少一个.他吃了十天才吃完,请问他一共 ...

  5. python小猴子摘桃子的故事_基于Python-Pycharm实现的猴子摘桃小游戏(源代码)

    源码及注释: import pygame from sys import exit from random import randint import time import os # 定义窗口分辨率 ...

  6. python猴子摘桃问题_桃子

    B - 蟠桃记2020-12-07 16:58:58 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题! 什么问题?他研究的问题 ...

  7. C语言递归——猴子摘桃

    猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又多吃了一个.第二天又将剩下的桃子吃掉一半,又多吃了一个.以后每天都吃前一天剩下的一半零一个.到第10天在想吃的时候就剩一个桃子了,问第一天共摘下来 ...

  8. C++猴子摘桃--递归实现

    问题描述 猴子第一天采摘了一些桃子,第二天吃了第一天的一半多一个,第三天吃了第二天的一半多一个-知道第十天就剩下一个.问:猴子第一天摘了多少桃子? 求解思路 根据题目意思可得: f(2)=f(1)/2 ...

  9. c#部分---递归题目;猴子摘桃

    //猴子摘了好多好多桃子,一天需要吃掉总数的2/3, //觉得不过瘾,还得再多吃一个 //吃到第9天的时候,发现只有2个桃子了 //问,当初猴子摘了多少桃子 class Program{public ...

最新文章

  1. CentOS6.8 编译安装LNMP
  2. ctrl+f5 强刷新
  3. TomCat服务器和Web应用
  4. 化境文件上传修改版.可检测任何木马
  5. [js] 实现一个函数记忆的方法
  6. html:(17):img标签和表单标签
  7. swift java_swift语法和java的比较
  8. python安装和更新pip
  9. 3D呈现transform-style(CSS3)
  10. 《深入理解Nginx:模块开发与架构解析》一3.3 如何将自己的HTTP模块编译进Nginx...
  11. 【渝粤教育】广东开放大学 跨文化商务沟通 形成性考核 (39)
  12. Android广告平台
  13. 电脑误删分区如何恢复?图文详解
  14. ST M24C01-WDW6TP EEPROM存储器芯片
  15. 悟空浏览器——青龙羊毛
  16. 按例学construct2_滚动背景制作 (一)
  17. python电子签章_签名python的搜索结果-阿里云开发者社区
  18. 致敬!阿里云的数据库侠客!
  19. 操作系统及软件常用的日语单词
  20. Dnsmasq加速本地DNS请求

热门文章

  1. FilterChain(过滤器链)详解
  2. spring循环依赖
  3. c语言程序 管理员,ShellExecuteEX(获取管理员权限) | C/C++程序员之家
  4. 使用GitHub-Pages创建博客和图片上传问题解决
  5. 主动降噪蓝牙耳机怎么选才不踩雷?推荐这五款高性价比蓝牙耳机
  6. git 给gitlab 添加公钥
  7. VBA 学习笔记 Wrod表格设置
  8. Android的进度条(ProgressBar)、拖动条(SeekBar)
  9. linux三剑客-grep详解
  10. Install Lenovo E430c wireless driver in linux Mint