2021-04-08 COMP9021第十四节课笔记

Fibonacci Number - 斐波那契数列

相关资料:Fibonacci
L = [0, 1, 1, 2, 3, 5…]
L[i] = L[i+1] + L[i+2]

[27]是生成数列的函数
[28]和[29]读取的方法
在这里插入图片描述

  • 用itertools.islice访问

官方文档:itertools.islice
语法:islice(iterable, start, stop)
第一个参数只要能转换成iterable就可以,第二三个参数是起止位置
返回值是一个iterable的对象,再转成list就能看见内容了。

在这里插入图片描述
既然如此,那就可以直接写上起止点访问数列了。牛皮…
在这里插入图片描述

  • 递归生成Fibonacci sequence
    可以是可以,但是很明显花的时间非常久。原因:很多地方有重复计算。
    e.g. f(5) = f(4)+f(3), f(6) = f(5)+f(4),本来已经有f(5)了,但是算f(6)的时候,又重新算了一次f(5)
    在这里插入图片描述

函数的默认参数

  1. 正常情况下没啥可说的,见下图:
    在这里插入图片描述

  2. 不正常的情况
    重新定义下function,默认参数是一个list。
    明显[108]正确输出,但是[109]的结果却不对。
    原因:这个默认的list L=[0] 一直在内存中,每次调用function修改的都是他自己,返回的也是他自己,所以就会变成这样。
    在这里插入图片描述
    正确处理这种情况:
    在这里插入图片描述

用默认参数去存储Fibonacci Sequence

有了前面这个骚操作,那么不就可以用个list去存储数列了么,字典和列表什么的都可以
在这里插入图片描述
在这里插入图片描述

hanoi - 汉诺塔

玩法:如下图,有ABC三根棍儿,要求把一坨disk移动到另一根棍儿上,每次只能移动一个disk,小的必须放在大的上面。
在这里插入图片描述
文字介绍
动画演示

  • 老师的代码 在这里插入图片描述
    解释:
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
错误是由Spectre在AHDL读入过程中发现的。错误代码为(vacomp-1008),错误信息显示为“无法编译”。 Spectre是一种用于电路仿真的软件工具,它可以用于分析和模拟电子系统。AHDL代表模拟后者硬件描述语言,它是一种用于描述数字电路的语言。在使用Spectre进行模拟时,可能会出现各种错误,其中(vacomp-1008)是一种常见的错误类型。 从错误信息来看,“无法编译”表示在读取AHDL代码时,Spectre无法将其转换为有效的仿真模型。这可能是由于多种原因导致的,例如AHDL代码中存在语法错误、引用了未定义的元件或信号,或者代码中的某些部分不符合Spectre的要求等等。 要解决这个错误,可以尝试以下几个步骤: 1. 检查AHDL代码中是否存在语法错误。确保所有语句、声明和赋值等都符合AHDL的语法规则。 2. 检查代码中是否引用了未定义的元件或信号。确认所有使用的元件和信号都已正确定义,并且它们的类型和属性与代码中的使用一致。 3. 确保代码中的各个部分都符合Spectre的要求。查阅Spectre的文档或用户手册,了解其对于AHDL代码的要求和限制,并进行相应的修改。 4. 尝试减少代码的复杂性。如果代码过于复杂,可以尝试分解成更小的模块进行测试和调试,逐步排查错误。 如果以上步骤都无法解决问题,可以尝试搜索或咨询相关的技术支持论坛或社区,寻求其他用户的帮助和建议。最终目标是找到导致错误的具体原因,并进行修正,以使代码能够成功编译和仿真。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值