《Python核心编程》第二版第308页第十一章练习 续三 -Python核心编程答案-自己做的-

时间:2023-02-13 16:09:22

11-14.
递归。我们也来看下在第8章中的斐波纳契数列。重写你先前计算斐波纳契数列的解(练习8-9)以便你可以使用递归。
【答案】本文来自博客园balian
代码如下:

#-*- encoding: utf-8 -*-

def fibonacci(n):
    "该函数能生成数列的第n个值"
    returnn >= 2 and fibonacci(n - 2) + fibonacci(n - 1) or n
# From www.cnblogs.com/balian/

fiboseq=[] number = 10 for i in range(number): fiboseq.append(fibonacci(i)) print fiboseq

 

【参考】
Fibonacci(斐波那契)序列的4种求解算法:
http://mrwlwan.wordpress.com/2011/09/02/4%E7%A7%8D-fibonacci%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E5%BA%8F%E5%88%97%E7%9A%84%E7%AE%97%E6%B3%95/

 

11-15.
递归。重写练习6-5的解,用递归向后打印一个字符串。用递归向前以及向后打印一个字符串。
【注】附英文版题目的原文:
Recursion. Rewrite your solution to Exercise 6-5, which prints a string backwards to use recursion. Use recursion to print a string forward and backward.
【答案】
代码如下:

#-*- encoding: utf-8 -*-

def Rprint(n, string):
    print string.pop(0), #当参数为0时,顺序输出字符串。当参数为默认,也就是无参数时,逆序输出字符串
    if n > 1: Rprint(n-1, string)


a = raw_input("Please input a string ... ")
stringList = []
for i in a:
    stringList.append(i)
    
print stringList

Rprint(len(stringList), stringList)    
# From www.cnblogs.com/balian/
 

 

【执行结果】参数为默认时,逆序输出字符串。

Please input a string ... this is an example.
['t', 'h', 'i', 's', ' ', 'i', 's', ' ', 'a', 'n', ' ', 'e', 'x', 'a', 'm', 'p', 'l', 'e', '.']
. e l p m a x e   n a   s i   s i h t

 

【未完】
本题答案完成得不理想,期待更好的解答。

keyword Python核心编程答案