《Lua程序设计第四版》 第一部分自做练习题答案

打印 上一主题 下一主题

主题 869|帖子 869|积分 2617

Lua程序设计第四版第一部分语言基础自做练习题答案,带⭐为重点。
1.1

输入负数,程序会死循环,修改如下
  1. -- 定义一个计算阶乘的函数
  2. function fact(n)
  3.   if n <= 0 then
  4.     return 1
  5.   else
  6.     return n * fact(n - 1)
  7.   end
  8. end
  9. print("enter a number")
  10. a = io.read("*n")
  11. while a < 0 do
  12.   print("number is negative, enter a number")
  13.   a = io.read("*n")
  14. end
  15. print(fact(a))
复制代码
2.1

修改打印棋盘函数,调用操作系统函数,首次打印时提前退出
  1. lua -l lib1
复制代码
2.2 ⭐

全排列问题,胡凡算法笔记第115页。需要一个额外的表来记录状态。
  1. print("use dofile")
  2. dofile("1.1.lua")
复制代码
2.0调用IsPlaceOK的次数15720,2.2调用IsPlaceOK的次数40320
3.1
  1. --a = true
  2. a = false
  3. --a = 1
  4. --a = "true"
  5. 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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表