zoukankan      html  css  js  c++  java
  • 当写递归的时候碰到的问题

    function persistence(num) {
        var numArr = num.toString().split("");
        var total = 1;
        for (var i = 0; i < numArr.length; i++) {
            total *= parseInt(numArr[i]);
        }
        
        if (total < 10) {
         cosnole.log(total);
    return total; } else { persistence(total); } } console.log(persistence(999));

    这种写法会出现错误,打印的结果为undefind, 原因是在进入else的时候没有将persistence  return出来,进入递归之后的返回值会一直在persistence函数的内部

    解决办法很简单

    function persistence(num) {
        var numArr = num.toString().split("");
        var total = 1;
        for (var i = 0; i < numArr.length; i++) {
            total *= parseInt(numArr[i]);
        }
        
        if (total < 10) {
            return total;
        } else {
            return persistence(total);
        }
    }
    
    
    console.log(persistence(999));

    在else的时候return这个函数出来,这样执行persistence就会返回执行函数,知道返回的是个个位数为止

  • 相关阅读:
    化了妆的祝福 4
    桥牌感悟 2
    关于送礼
    东京disney sea流水账 1
    东京disney sea流水账 3
    晕倒的候任日本驻华大使
    一饮一啄
    就算神游 之二:行路 4
    关于送礼续
    桥牌感悟 3
  • 原文地址:https://www.cnblogs.com/kugeliu/p/7250923.html
Copyright © 2011-2022 走看看