什么是递归

水深无声 2022-12-19 06:25 220阅读 0赞

什么是递归

**递归:**如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数

**注意:**递归函数的作用和循环效果一样,由于递归很容易发生“栈溢出”错误(stack overflow),所以必须要加退出条件return。

利用递归求1~n的阶乘

  1. //利用递归函数求1~n的阶乘 1 * 2 * 3 * 4 * ..n
  2. function fn(n) {
  3. if (n == 1) { //结束条件
  4. return 1;
  5. }
  6. return n * fn(n - 1);
  7. }
  8. console.log(fn(3));

利用递归求斐波那契数列

  1. // 利用递归函数求斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21...
  2. // 用户输入一个数字 n 就可以求出 这个数字对应的兔子序列值
  3. // 我们只需要知道用户输入的n 的前面两项(n-1 n-2)就可以计算出n 对应的序列值
  4. function fb(n) {
  5. if (n === 1 || n === 2) {
  6. return 1;
  7. }
  8. return fb(n - 1) + fb(n - 2);
  9. }
  10. console.log(fb(3));

利用递归遍历数据

  1. // 我们想要做输入id号,就可以返回的数据对象
  2. var data = [{
  3. id: 1,
  4. name: '家电',
  5. goods: [{
  6. id: 11,
  7. gname: '冰箱',
  8. goods: [{
  9. id: 111,
  10. gname: '海尔'
  11. }, {
  12. id: 112,
  13. gname: '美的'
  14. },
  15. ]
  16. }, {
  17. id: 12,
  18. gname: '洗衣机'
  19. }]
  20. }, {
  21. id: 2,
  22. name: '服饰'
  23. }];
  24. //1.利用 forEach 去遍历里面的每一个对象
  25. function getID(json, id) {
  26. var o = { };
  27. json.forEach(function(item) {
  28. // console.log(item); // 2个数组元素
  29. if (item.id == id) {
  30. // console.log(item);
  31. o = item;
  32. return o;
  33. // 2. 我们想要得里层的数据 11 12 可以利用递归函数
  34. // 里面应该有goods这个数组并且数组的长度不为 0
  35. } else if (item.goods && item.goods.length > 0) {
  36. o = getID(item.goods, id);
  37. }
  38. });
  39. return o;
  40. }

发表评论

表情:
评论列表 (有 0 条评论,220人围观)

还没有评论,来说两句吧...

相关阅读

    相关 什么

    什么是递归 \\递归:\\如果一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数 \\注意:\\递归函数的作

    相关 什么

    > 目前我找到的对递归最恰当的比喻,就是查词典。 > 我们使用的词典,本身就是递归,为了解释一个词,需要使用更多的词。 > 当你查一个词,发现这个词的解释中某个词仍然不

    相关 什么

    程序调用自身就叫做递归。 递归一般用来算一些比较麻烦的算法问题。 递归跟循环的区别,循环注重过程,而递归值注重结果。 简单的来说就是:用循环能实现的,递归一般可以实