1. 程式人生 > 程式設計 >python 使用遞迴實現列印一個數字的每一位示例

python 使用遞迴實現列印一個數字的每一位示例

我就廢話不多說了,直接上程式碼吧!

def func(n):
  # 從高分為開始列印
  lengh = len(str(n))   # 確定數字的長度
  x = 10**(lengh-1)    # 確定數字的分位
  if n < 10:
    print(n)
  else:
    print(int(n/x))
    func(n % x) # 對n的x分位取餘得到


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

上述凶高分位列印的時候,會出現0無法打出的現象,現在加一個判斷做一個優化

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)

當然也有同學有跟簡單的方法來寫,但是需要一定的理解力,就是把低分為的實現方法列印和呼叫換一個位置變可實現

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

func(int(n / 10))這一步呢其實是先一直在呼叫,並沒有實現列印,等呼叫到最後一位的時候,就開始回溯,沒回溯一步,便列印一位數數來

補充拓展:使用python遞迴列印楊輝三角

啥也不說了,上程式碼吧

# 楊輝三角
 
# 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
 
#定義二位陣列,存放;如果為了節約空間,也可以不用放二維陣列
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 使用遞迴實現列印一個數字的每一位示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。