溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例

發(fā)布時(shí)間:2020-10-17 17:18:25 來(lái)源:腳本之家 閱讀:210 作者:Jenny_He 欄目:開(kāi)發(fā)技術(shù)

我就廢話不多說(shuō)了,直接上代碼吧!

def func(n):
  # 從高分為開(kāi)始打印
  lengh = len(str(n))   # 確定數(shù)字的長(zhǎng)度
  x = 10**(lengh-1)    # 確定數(shù)字的分位
  if n < 10:
    print(n)
  else:
    print(int(n/x))
    func(n % x) # 對(duì)n的x分位取余得到


def func1(n):
  # 從低分位開(kāi)始打印
  if n < 10:
    print(n)
  else:
    print(n % 10)
    func(int(n / 10))

上述兇高分位打印的時(shí)候,會(huì)出現(xiàn)0無(wú)法打出的現(xiàn)象,現(xiàn)在加一個(gè)判斷做一個(gè)優(yōu)化

def f(n):
  num_len = len(str(n))
  if n < 10:
    print(n)
    # return n
  else:
    print(int(n / (10**(num_len-1))), end=' ')
    mod = n % (10**(num_len-1))
    dif_value = num_len - len(str(mod))
    if dif_value > 1:
      for i in range(1, dif_value):
        print(0, end=' ')
    f(mod)


f(200400900000)

當(dāng)然也有同學(xué)有跟簡(jiǎn)單的方法來(lái)寫,但是需要一定的理解力,就是把低分為的實(shí)現(xiàn)方法打印和調(diào)用換一個(gè)位置變可實(shí)現(xiàn)

def func1(n):
   # 從低分位開(kāi)始打印
   if n < 10:
     print(n)
   else:
     func(int(n / 10))
     print(n % 10)

func(int(n / 10))這一步呢其實(shí)是先一直在調(diào)用,并沒(méi)有實(shí)現(xiàn)打印,等調(diào)用到最后一位的時(shí)候,就開(kāi)始回溯,沒(méi)回溯一步,便打印一位數(shù)數(shù)來(lái)

補(bǔ)充拓展:使用python遞歸打印楊輝三角

啥也不說(shuō)了,上代碼吧

# 楊輝三角
 
# 1
# 1 1
# 1 2 1
#1 3 3 1
# ........
 
 
#傳入上一行,生成下一行
def next_line(lst):
  newline = [1]
  for x in range(len(lst) - 1):
    newline.append(lst[x] + lst[x + 1])
  newline.append(1)
  return newline
 
#定義二位數(shù)組,存放;如果為了節(jié)約空間,也可以不用放二維數(shù)組
def yanglst(n):
  yanghui = []
  L = [1]
  for x in range(n):
    yanghui.append(L)
    L = next_line(L)
  return yanghui
 
for I in yanglst(20):
  print(I)

以上這篇python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI