python实战训练---基础练习(6)

文章目录

    • 递归求阶乘
    • 递归求等差数列
    • 反向输出
    • 回文数

递归求阶乘

题目 :
利用递归方法求5!。

程序分析: 递归调用即可。

def factorial(n):
    return n*factorial(n-1) if n>1 else 1
print(factorial(5))
120

递归输出
题目 :
利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

程序分析:
递归真是蠢方法。

def rec(string):
    if len(string)!=1:
        rec(string[1:])
    print(string[0],end='')

rec(input('string here:'))

递归求等差数列

题目:
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析 就等差数列。

def age(n):
    if n==1:
        return 10
    return 2+age(n-1)
print(age(5))
18

反向输出

题目:
给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析 :
学会分解出每一位数,用字符串的方法总是比较省事。

n=int(input('输入一个正整数:'))
n=str(n)
print('%d位数'%len(n))
print(n[::-1])

回文数

题目:
一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:
用字符串比较方便,就算输入的不是数字都ok。

n=input("随便你输入啥啦:")
a=0
b=len(n)-1
flag=True
while a<b:
    if n[a]!=n[b]:
        print('不是回文串')
        flag=False
        break
    a,b=a+1,b-1
if flag:
    print('是回文串')

你可能感兴趣的:(练习,python,算法)