zoukankan      html  css  js  c++  java
  • 【Lua程序设计第四版练习题答案】ch01 Lua语言入门

    联系1.1: 运行阶乘的示例并观察,如果输入负数,程序会出现什么问题?试着修改代码来解决问题。

     
    -- 定义一个计算阶乘的函数
    function fact (n)
    if n == 0 then
    return 1
    else
    return n * fact(n-1)
    end
    end
    print("enter a number:")
    a = io.read("*n") -- 读取一个数字
    print(fact(a))

    这是本章最开始提到的阶乘示例程序,通过实际的运行,我们了解到由于程序没有对负数形式进行校验的逻辑,因此程序会一直迭代递归下去,没有终止条件lua编译器报出堆栈溢出的错误才结束。

    在进行修改之后的代码如下:

    opefunction fact(n)
    n = n or 0
    if n < 0 then
    error("Cannot calculate the factorial of a negative number")
    elseif n == 0 then
    return 1
    else
    return n * fact(n-1)
    end
    end
    print("Enter a number: ")
    a = io.read("*n")
    print("Answer is: ", fact(a))

    这里加入对输入负数的终止条件的判断,因此不会再出现堆栈溢出的错误。

     
  • 相关阅读:
    java基础---13. 匿名对象
    java基础---12. scanner
    java基础---11. API
    Web APIs---2. DOM(1)
    Web APIs---1.概述
    java基础---10. 封装性
    java基础---9. 面向对象
    java基础---8. 数组
    9月1日,随便写点啥
    银川行路随感
  • 原文地址:https://www.cnblogs.com/longsl/p/11149349.html
Copyright © 2011-2022 走看看