python - 你能用python打印第n个斐波那契序列吗?(虽然它包括一些条件)
问题描述
当给出 n 时,你们能打印第 n 个斐波那契数列吗?(使用python)但你不能使用import, for, while, if, elif, else, is, True, False, <, >, =, +, -, *, /, %, &, |, ^, ~, [, ], {, }, ‘, “, and numbers (0~9)
谁能解决这个问题???
解决方案
因为@kuro 在评论中提出了问题,所以这是我的解决方案——不过这个问题可能会被关闭
# as n is given, assuming that is a number
n = 10
def fib(a, b, d):
print(a)
try:
divmod(d, d)
fib(b, sum((a, b)), len(range(len(((),)), d)))
except ZeroDivisionError:
pass
fib(len(()), len(((),)), n)
或者,如果您更喜欢可以导入和调用的函数:
def _fib(a, b, d):
print(a)
try:
divmod(d, d)
_fib(b, sum((a, b)), len(range(len(((),)), d)))
except ZeroDivisionError:
pass
def fib(n):
do_fib(len(()), len(((),)), n)
一些解释,divmod(d, d)
尝试自行除法,但在为零d
时给出异常。d
所以它是一样的:
def _fib(a, b, d):
print(a)
if d:
_fib(b, sum((a, b)), len(range(len(((),)), d)))
但这是不允许的,因为if
在里面。
sum((a, b))
只是对 tuple 的值求和(a, b)
,所以它是一样的a + b
,因为((),)
是一个只包含 1 个元素的元组,即空元组,len(((),))
只是一种复杂的编写方式1
。的长度range(1, d)
为d
负一,因此与以下内容相同:
def _fib(a, b, d):
print(a)
if d:
_fib(b, a + b, d - 1)
这是微不足道的。
最后,在初始调用中,len(())
是空元组的长度,所以就是0
.
解决方案取决于意识到,要定义斐波那契数列,您只需要 0、1 和 + 操作,我在没有使用这些符号的情况下定义了这些操作。你需要一些方法来决定什么时候停止没有if
,这是问题的另一半。
推荐阅读
- excel - 基于多个条件将多行提取到有限模板中
- reactjs - 如何使用 Kitten UI 进行单元测试
- javascript - 将 json 数据转换为相应的文件类型
- javascript - 创建循环而不是一遍又一遍地复制/粘贴代码
- nim-lang - Nim 支持类型推断吗?
- python - msys: pip install cffi 由于未定义的引用而失败
- session - 微服务会话管理
- mysql - Select * vs Select count(*),哪个算行更快?
- javascript - 是否可以在没有输入文件的情况下运行汇总插件(在多捆绑实例中)?
- laravel - 筛选库存中可用的产品