肖公子 发表于 2023-6-1 14:38:11

打卡

看完了分支与循环,九九乘法表属实没看懂{:10_266:}

歌者文明清理员 发表于 2023-6-1 14:41:37

?汉诺塔才看不懂
九九乘法表就是一个一个取数,然后乘起来,输出
汉诺塔我也没搞懂

zhangjinxuan 发表于 2023-6-1 15:10:54

打印九九乘法表的核心算法即为循环嵌套,循环嵌套是在信息学竞赛中的一个坎(个人经验)。

下面是一个简单的例子:

for i in range(1, 9 + 1):
    for j in range(1, i + 1):
      print(f"{i}*{j}={i*j}", end = " ")
    print()


这段代码可以理解为,我们先依次打印第一个因数为 i 的乘法表,打印方法即为枚举第二个因数,输出对应的结果即可。

希望我的回答能让您理解到分支与循环的知识点!

歌者文明清理员 发表于 2023-6-1 15:20:42

zhangjinxuan 发表于 2023-6-1 15:10
打印九九乘法表的核心算法即为循环嵌套,循环嵌套是在信息学竞赛中的一个坎(个人经验)。

下面是一个简 ...

这不是求助帖

zhangjinxuan 发表于 2023-6-1 15:23:05

歌者文明清理员 发表于 2023-6-1 14:41
?汉诺塔才看不懂
九九乘法表就是一个一个取数,然后乘起来,输出
汉诺塔我也没搞懂


汉诺塔的核心算法即为递归,递归也是在信息学竞赛中的一个坎。

递归主要是将最终问题拆成若干容易解决的问题,以此解决最终问题,在汉诺塔这个例子中,我们就先要将前 n-1 层的汉诺塔从 a 柱开始借助 c 柱移到 b 柱,再将本层移到 c 层,最后将前 n-1 层的汉诺塔从 b 柱借助 a 柱移到 c 柱,以此往复,我们即可解出汉诺塔。

同时,递归要有边界条件,即解决容易解决的问题时,不能继续递归,在汉诺塔这个例子中,当 n=1,我们可以直接求出答案,即从 a 柱移到 c 柱子。

下面是一个 Python 的解决方案:

def Hanoi(n, a, b, c):
    if n == 1: # 判断边界条件
      print(f"{n} from {a} to {c}")
    else:
      Hanoi(n - 1, a, c, b) # n-1 层汉诺塔从 a 移到 b
      print(f"{n} from {a} to {c}") # 移动本层汉诺塔
      Hanoi(n - 1, b, a, c) # n-1 层汉诺塔从 b 移到 c
Hanoi(3, "a", "b", "c")

zhangjinxuan 发表于 2023-6-1 15:23:42

歌者文明清理员 发表于 2023-6-1 15:20
这不是求助帖

好的,我明白了,这是不是一篇求助帖子,不需要求助。

歌者文明清理员 发表于 2023-6-1 15:24:23

zhangjinxuan 发表于 2023-6-1 15:23
好的,我明白了,这是不是一篇求助帖子,不需要求助。

不是抵制gpt吗
哈诺塔就8行代码,我就是栽在这里了

zhangjinxuan 发表于 2023-6-1 15:27:35

歌者文明清理员 发表于 2023-6-1 15:24
不是抵制gpt吗
哈诺塔就8行代码,我就是栽在这里了

请问您需要什么帮助吗?

zhangjinxuan 发表于 2023-6-1 15:28:58

歌者文明清理员 发表于 2023-6-1 15:24
不是抵制gpt吗
哈诺塔就8行代码,我就是栽在这里了

好的,我明白了,只要没有用上表情或者用上了加粗,人类就会做出错误的判断,将一个真人的行为误以为是人工智能做出的行为。{:10_250:}

肖公子 发表于 2023-6-1 15:36:49

zhangjinxuan 发表于 2023-6-1 15:10
打印九九乘法表的核心算法即为循环嵌套,循环嵌套是在信息学竞赛中的一个坎(个人经验)。

下面是一个简 ...

谢谢,我再研究研究

歌者文明清理员 发表于 2023-6-4 17:08:47

zhangjinxuan 发表于 2023-6-1 15:28
好的,我明白了,只要没有用上表情或者用上了加粗,人类就会做出错误的判断,将一个真人的行为误以为是 ...

人类误以为您也是ChatGpt,先生。非常抱歉。
我赞同您的回答,虽然我知道作为Ai助手是不应该有情感的。
页: [1]
查看完整版本: 打卡