Python3算法基础练习:编程100例( 26 ~ 30)

  • Post author:
  • Post category:python


上期文章:


Python3算法基础练习:编程100例( 21~ 25)



26 递归求 20! 的阶乘

题目:递归求 20! 的阶乘

代码:

# 递归求 20!

def factorial(n):
    fn = 0
    if n == 0:
        fn = 1
    else:
        fn = n * factorial(n - 1)

    return fn

print(factorial(20))




for i in range(20):
    print("%d 的阶乘是 %d" % (i + 1,factorial(i + 1)))



结果:

在这里插入图片描述



27 字符串反转

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

代码:

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

from sys import stdout


def revertPrint(str,len):
    if len == 0:
        return
    else:
        stdout.write(str[len-1])
        stdout.write(' ')
        revertPrint(str,len - 1)

str = input('请输入 5 个字符:')
l = len(str)

stdout.write('反转结果是: ')
revertPrint(str,l)

结果:

在这里插入图片描述



28 猜岁数

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

也是很简单的题

但是

要求递归实现!!

代码

# 请用递归实现

def getAge(n):
    if n == 1:
        return 10 # 第一个人 10 岁
    else:
        answer = getAge(n - 1) + 2
    return answer

print (getAge(5))

结果 18

在这里插入图片描述



29 整数打印每一位数字

题目:给一个

正整数

,要求:一、求它是几位数,二、逆序打印出各位数字

分析:

使用 求余 求模运算

,正整数,不需要正负号的判断,不做处理!

代码:

from sys import stdout


n = int(input("请输入一个数:\n"))
l = len(str(n))

print("是 %d 位数:", l)

stdout.write('从个位往后: ')

for i in range(l):
    stdout.write(str(n % 10))
    stdout.write(' ')

    n = int(n / 10)


结果:

在这里插入图片描述

在这里插入图片描述



30 回文数

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

代码:

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

from sys import stdout

n = int(input("请输入一个 5 位数:\n"))
s = str(n)

flag = False

if len(s) != 5:
    stdout.write('不是 5 位数 ')
else:
    for i in range(len(s) // 2):
        if s[i] != s[-i - 1]:
            flag = False
            break
        else:
            flag = True

if (flag):
    print("是 一个回文数!" )
else:
    print("不是 一个回文数!" )



结果:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



版权声明:本文为qq_43473694原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。