Question 58
写一个程序来计算:
当n>0时,f(n)=f(n-1)+100
且f(0)=0
通过控制台输入给定的n(n>0)。
例如:如果将以下n作为程序的输入:
5
然后,程序的输出应该是:
500
如果输入数据被提供给问题,则应假设它是控制台输入。
方法1:
def f(n):if n == 0:return 0return f(n-1) + 100n = int(input())
print(f(n))
方法2:
n = int(input())
f = lambda x: f(x-1)+100 if x > 0 else 0
print(f(n))
Question 59
斐波那契数列是根据以下公式计算的:
f(n)=0 if n=0 f(n)=1 if n=1 f(n)=f(n-1)+f(n-2) if n>1
请编写一个程序,通过控制台输入给定的n,计算f(n)的值。
例如:如果将以下n作为程序的输入:
7
然后,程序的输出应该是:
13
方法1:
def f(n):if n < 2:return nreturn f(n-1) + f(n-2)n = int(input())
print(f(n))
方法2:
n = int(input())
f = lambda x: 0 if x == 0 else 1 if x == 1 else f(x-1)+f(x-2)
print(','.join([str(f(x)) for x in range(0, n+1)]))
Question 60
斐波那契数列是根据以下公式计算的:
f(n)=0 if n=0 f(n)=1 if n=1 f(n)=f(n-1)+f(n-2) if n>1
请编写一个程序,通过控制台输入给定的n,计算f(n)的值。
例如:如果将以下n作为程序的输入:
7
然后,程序的输出应该是:
0,1,1,2,3,5,8,13
方法1:
def f(n):if n < 2:fibo[n] = nreturn fibo[n]fibo[n] = f(n-1) + f(n-2)return fibo[n]n = int(input())
fibo = [0]*(n+1) # initialize a list of size (n+1)
f(n) # call once and it will set value to fibo[0-n]
fibo = [str(i) for i in fibo] # converting integer data to string type
ans = ",".join(fibo) # joining all string element of fibo with ',' character
print(ans)
方法2:
def fibo(n):if n < 2: return nreturn fibo(n-1)+fibo(n-2)def print_fiblist(n):fib_list = [(str(fibo(i))) for i in range(0, n+1)]return print(",".join(fib_list))
n = int(input())
print_fiblist(n)
Question 61
请用generator写一个程序,当n是通过控制台输入的时候,用逗号分隔的形式打印0到n之间的偶数。
例如:如果将以下n作为程序的输入:
10
然后,程序的输出应该是:
0,2,4,6,8,10
如果输入数据被提供给问题,则应假设它是控制台输入。
n = int(input())for i in range(0, n+1, 2):if i < n - 1:print(i, end = ',' )else:print(i)
Question 62
请编写一个程序,使用生成器打印出0和n之间的可被5和7整除的数字,并以逗号分隔,而n是通过控制台输入的。
例如:如果将以下n作为程序的输入:
100
然后,程序的输出应该是:
0,35,70
如果输入数据被提供给问题,则应假设它是控制台输入。
def generate(n):for i in range(n+1):if i % 35 == 0: # 5*7 = 35, if a number is divisible by a & b then it is also divisible by a*byield in = int(input())
resp = [str(i) for i in generate(n)]
print(",".join(resp))