python求出五位数的回文数_python之递归
#coding=utf-8
'''
#題目:打印出如下圖案(菱形)
nu?=?1??#?開始值
k?=?2???#?變量值
while?nu?>=?0:
????print(int((7?-?nu)?/?2)?*?'?'?+?'*'?*?nu)
????nu?+=?k
????if?nu?==?7:
????????k?=?-k
#題目:有一分?jǐn)?shù)序列:2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13... 求出這個數(shù)列的前20?項(xiàng)之和。
sum?=?0
a?=?0
b?=?1
for?i?in?range(21):
????a,?b??=?b,?a+b
????sum?+=?b/a
????print(b,a,sum-1)
from?functools?import?lru_cache
@lru_cache(maxsize=None)
def?fib(n):
????if?n?
????????return?n
????return?fib(n-1)?+?fib(n-2)
print([fib(n)?for?n?in?range(16)])
#題目:求 1+2!+3!+...+20! 的和
from?functools?import?lru_cache,?reduce
@lru_cache(maxsize=None)
def??factorial(n):
????if?n?==?1:
????????return?1
????return?n*factorial(n-1)
sum?=?reduce(lambda?x,y:?x+y,?[factorial(n)?for?n?in?range(1,?21)])
print(sum)
#題目:利用遞歸方法求 5! 。
from?functools?import?lru_cache,?reduce
@lru_cache(maxsize=None)
def??factorial(n):
????if?n?==?1:
????????return?1
????return?n*factorial(n-1)
print(factorial(5))
#題目:利用遞歸函數(shù)調(diào)用方式,將所輸入的 5 個字符,以相反順序打印出來。
def?str_reverse(n,?string):
????if?n?==?0:
????????return?
????print(string[n-1])
????str_reverse(n-1,?string)
string?=?'hello'#可替換成input
print(str_reverse(len(string),?string))
#題目:有 5 個人坐在一起,問第五個人多少歲?他說比第4 個人大2 歲。問第4 個人歲數(shù),他說比第3 個人大2 歲。問第三個人,又說比第2 人大兩歲。
#?問第2 個人,說比第一個人大兩歲。最后問第一個人,他說是10?歲。請問第五個人多大?
def?get_age(n):
????if?n?==?1:
????????return?10
????return?get_age(n-1)?+?2
print(get_age(5))
#題目:給一個不多于 5 位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。
def?num_reverse(n,?string):
????if?n?==?0:
????????return?
????print(string[n-1])
????num_reverse(n-1,?string)
num?=?123
num?=?str(num)#如果使用input不用轉(zhuǎn)換,但是需要判斷isnumeric()
print(num_reverse(len(num),?num))
#題目:一個5 位數(shù),判斷它是不是回文數(shù)。即12321 是回文數(shù),個位與萬位相同,十位與千位相同。
def?palindrome(n,?num):
????if?0?<=?n??and?num[0]?==?num[-1]:
????????return??print('%s是回文數(shù)'%(num_))
????palindrome(n-2,?num[1:-1])
num?=?'102343201'
num_?=?num?
n?=?len(num)
palindrome(n,??num)
#題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續(xù)判斷第二個字母。
weeks?=?['Monday',?'Tuesday',?'Wednesday',?'Thursday',?'Friday',?'Saturday',?'Sunday']
week?=?input("請輸入星期的首字母:")
result?=?[]
def?get_week(week):
????global?result
????result?=[x?for?x?in?weeks?if?x.startswith(week)]
????if?len(result)?==?1:
????????return?result??
????elif?len(result)?==?2:
????????week?+=?input("請輸入星期的下一個字母:")
????elif?len(result)?==?0:
????????week?=?input("請重新輸入星期的首字母:")
????get_week(week)#return?后還要執(zhí)行這條語句一次
????return?result
print(get_week(week))
#題目:求一個3*3 矩陣對角線元素之和
a?=?[]
sum?=?0
for?i?in?range(3):
????a.append([])
????for?j?in?range(3):
??????? a[i].append(int(input('請輸入第%s行第%s列的元素:'?%?(i + 1, j + 1))))
??? print('數(shù)組:',a)
for?i?in?range(3):
????sum?+=?a[i][i]
print('數(shù)組之和:',sum)
#題目:對10?個數(shù)進(jìn)行排序
list_num?=?[2,?3,?1,?7,?9,?8,?4,?6,?5,?0]
list_num.sort(reverse=False)
print(list_num)
'''
#題目:有一個已經(jīng)排好序的數(shù)組?,F(xiàn)輸入一個數(shù),要求按原來的規(guī)律將它插入數(shù)組中。
list_num?=?[2,?3,?1,?7,?9,?8,?4,?6,?5,?0]
list_num.sort(reverse=True)
a?=?-1
if?list_num[0]-list_num[-1]?>=?0:
????for?i?in?list_num:
????????if?a?1]:
????????????list_num.append(a)
????????????break
????????if?a?>?i:
????????????list_num.insert(list_num.index(i),?a)
????????????break
????????else:
????????????continue
else:
????for?i?in?list_num:
????????if?a?>?list_num[-1]:
????????????list_num.append(a)
????????????break
????????if?a?
????????????list_num.insert(list_num.index(i),?a)
????????????break
????????else:
????????????continue
print(list_num)
#為什么return?i?返回的是?i?,?而print(i)得到的是?0
def?func(i):
????if?i?==?0:
????????print(i)
????????return?i
????elif?i?>?-2:
????????i?=?i-1
????????func(i)
print(func(3))
有遞歸的情況:
無遞歸的情況:
錯誤的解決方案:
def?func(i):
????if?i?==?0:
????????print(i)
????????return?i
????elif?i?>?-2:
????????i?=?i-1
????????func(i)
????????return(i)
print(func(3))
正確的解決方案一:
def?func(i):
????if?i?==?0:
????????print(i)
????????return?i
????elif?i?>?-2:
????????i?=?i-1
????????return(func(i))
print(func(3))
正確的解決方案二:
result?=?None
def?func(i):
????if?i?==?0:
????????print(i)
????????global?result
????????result?=?i
????elif?i?>?-2:
????????i?=?i-1
????????func(i)
????return?result
print(func(3))
總結(jié)
以上是生活随笔為你收集整理的python求出五位数的回文数_python之递归的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux webshell 页面管理,
- 下一篇: php 系统环境变量引用,PHP 系统变