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")
- while a < 0 do
- print("number is negative, enter a number")
- a = io.read("*n")
- end
- print(fact(a))
复制代码 2.1
修改打印棋盘函数,调用操作系统函数,首次打印时提前退出2.2 ⭐
全排列问题,胡凡算法笔记第115页。需要一个额外的表来记录状态。- print("use dofile")
- dofile("1.1.lua")
复制代码 2.0调用IsPlaceOK的次数15720,2.2调用IsPlaceOK的次数40320
3.1
- --a = true
- a = false
- --a = 1
- --a = "true"
- print(a == true or a == false)
复制代码 3.2
[code]print(0xFFFFFFFFFFFFFFFF) -- -1print(0x8000000000000000) -- 最小的负整数print(0x7FFFFFFFFFFFFFFF)print(0x7FFFFFFFFFFFFFFF * 2) -- 回环,对最高位取舍,等价于print(0xFFFFFFFFFFFFFFFE)print(0x8000000000000000 * 2) -- 回环,对最高位取舍,等价于print(0x0000000000000000)-- math.maxinteger除首位外全1,相乘后得到除最后一位和首部外,中间全0,超过符号位以外的部分被抛弃,其余全为0,最后只剩最后一位的1,所以结果为1。-- math.mininteger除首位外全0,超出符号位以外的数值均被抛弃,其余全为0,所以结果为0。--[[二进制乘法要求满二进一原则"_"符号为舍弃高位求解:0x7FFFFFFFFFFFFFFF * 2 01111111 |