题目描述
输入两个正整数,求其最大公约数。
输入描述:
测试数据有多组,每组输入两个正整数。
输出描述:
对于每组输入,请输出其最大公约数。
解题思路
使用辗转相除法,百度百科的流程图如下
def commonDiv(x, y):
# 辗转相除法
while y:
x, y = y, x%y
return x
try:
while True:
a, b = map(int, input().split())
print(commonDiv(a, b))
except Exception:
pass
注意点:
1、辗转相除法的递归法和非递归法(以上为非递归法)
2、怎么限制只输入两位数 m, n = map(int, input().split())
(扩展下:同时输入两个字符串?同时输入三个浮点数?)
题目描述
The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55...} are defined by the recurrence: F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2 Write a program to calculate the Fibonacci Numbers.
输入描述:
Each case contains a number n and you are expected to calculate Fn.(0<=n<=30) 。
输出描述:
For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.
解题思路
def Fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return Fibonacci(n-1)+Fibonacci(n-2)
num = int(input())
print(Fibonacci(num))