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 使用递归实现打印一个数字的每一位示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python打印输出数组中全部元素

    学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或print函数可以答应出数组中的每个元素: 如果数组的容量过大,只能打印出数组的部分元素,打印结果只包含开始部分元素和结尾部分元素,中间元素省略.省略的部分不利于程序的调试: 因此,为了方便调试程序,需要将数组中的元素全部打印出来. 1. 少量元素情况 #打印数组中的元素 import numpy

  • Python递归调用实现数字累加的代码

    我就废话不多说了,直接上代码吧! def sum_numbers(num): # 1.出口 if num == 1: return 1 # 2.数组累加 temp = sum_numbers(num - 1) return num + temp result = sum_numbers(3) print(result) 输出: 6 补充拓展:python递归计数及结束递归 题目:搜索旋转排序数组 class Solution: TOTAL = 0 RUN = True def search(se

  • python 使用递归回溯完美解决八皇后的问题

    八皇后问题描述:在一个8✖️8的棋盘上,任意摆放8个棋子,要求任意两个棋子不能在同一行,同一列,同一斜线上,问有多少种解法. 规则分析: 任意两个棋子不能在同一行比较好办,设置一个队列,队列里的每个元素代表一行,就能达到要求 任意两个棋子不能在同一列也比较好处理,设置的队列里每个元素的数值代表着每行棋子的列号,比如(0,7,3),表示第一行的棋子放在第一列,第二行的棋子放在第8列,第3行的棋子放在第4列(从0开始计算列号) 任意两个棋子不能在同一斜线上,可以把整个棋盘当作是一个XOY平面,原点在

  • python实现全排列代码(回溯、深度优先搜索)

    从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列. 公式:全排列数f(n)=n!(定义0!=1) 1 递归实现全排列(回溯思想) 1.1 思想 举个例子,比如你要对a,b,c三个字符进行全排列,那么它的全排列有abc,acb,bac,bca,cba,cab这六种可能就是当指针指向第一个元素a时,它可以是其本身a(即和自己进行交换),还可以和b,c进行交换,故有3种可能,当第一个元素a确定以后,指针移向第二

  • 基于Python数据结构之递归与回溯搜索

    目录 1. 递归函数与回溯深搜的基础知识 2. 求子集 (LeetCode 78) 3. 求子集2 (LeetCode 90) 4. 组合数之和(LeetCode 39,40) 5. 生成括号(LeetCode 22) 6. N皇后(LeetCode 51,52) 7. 火柴棍摆正方形(LeetCode 473) 1. 递归函数与回溯深搜的基础知识 递归是指在函数内部调用自身本身的方法.能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解

  • 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))

  • python实现逆序输出一个数字的示例讲解

    问题是:输入一个数字,按照指定要求逆序输出该数字,很简单,下面是实现: #!usr/bin/env python #encoding:utf-8 ''' __Author__:沂水寒城 功能:逆序输出一个数字 如果数字是正数直接输出如:177--->771 如果数字是负数保留负号如:-945--->-549 如果数字以0结果逆序后需要去除0如:100--->1 如果数字很大会造成溢出返回0即可 ''' def inverse_num(one_num): ''' 逆序输出一个数字 '''

  • 使用Python的Bottle框架写一个简单的服务接口的示例

    是不是有这么一个场景,对外提供一堆数据或者是要返回给用户一个结果.但是不想把内部的一些数据和逻辑暴露给对方...简单点来说,就是想以服务的方式对外提供一个接口.对于这种有很多处理方式,RPC,搭建一个web服务啥的....但是这些毕竟都太重量级了,操作起来很麻烦.我这里给出的一种非常easy的方式来处理.使用bottle解决问题. 需求: 检查一个zookeeper服务中的某些节点是否存在,如果存在返回OK,不存在则给出不存的节点信息.要求返回的信息是和pyunit的结果信息一致. 实现环境:

  • Python实现按照指定要求逆序输出一个数字的方法

    本文实例讲述了Python实现按照指定要求逆序输出一个数字的方法.分享给大家供大家参考,具体如下: 问题是:输入一个数字,按照指定要求逆序输出该数字,很简单,下面是实现: #!usr/bin/env python #encoding:utf-8 ''''' __Author__:沂水寒城 功能:逆序输出一个数字 如果数字是正数直接输出如:177--->771 如果数字是负数保留负号如:-945--->-549 如果数字以0结果逆序后需要去除0如:100--->1 如果数字很大会造成溢出返

  • python逆序打印各位数字的方法

    如下所示: # -*- coding: utf-8 -*- # raw_input获取给定的一个不多于5位的正整数. # 一.求它是几位数: # 二.逆序打印出各位数字. def f(n): m = map(int, n) print "该数为%d位数"%len(m) m.reverse() for i in m: print i, if __name__=="__main__": n=raw_input("请输入一个多位数的正整数:") f(n

  • python json 递归打印所有json子节点信息的例子

    我就废话不多说了,直接上代码吧 def json_txt(self, dic_json): #self.debug_print("json_txt") if isinstance(dic_json, dict): # 判断是否是字典类型isinstance 返回True false for key in dic_json: #dic_json = json.loads(s) s = dic_json[key] #self.debug_print(str(len(s)) + "

  • Python递归实现打印多重列表代码

    废话不多说,我直接上代码吧! # 递归方法打印多重列表 li = [1, [[2, [3]], [4], 5], 6, 7, [8], 9, 10] def print_li(li): for x in li: if type(x) == list: print_li(x) else: print(x) print_li(li) 建立打印函数print_li(li),用for循环判断列表中的每一项, 如果该项还是列表,则递归调用函数自身继续判断, 如果不是列表,则直接输出即可. 补充拓展:pyt

  • java高效打印一个二维数组的实例(不用递归,不用两个for循环)

    打印1个元素,不让循环变量i++,走出思维定式(执行一次循环体,就i++).public class OneForPrint2DArr { public static void main(String[] args) throws Exception { int[][] a = { { 1, 2, 3 }, { 4, 5} }; for (int i = 0, j = 0; i < a.length;) { System.out.println(a[i][j]); j++; if (j >=

  • Python 输入一个数字判断成绩分数等级的方法

    成绩分数等级为: 100-90 A 90-80 B 80-70 C 70-60 D 60以下 F 实现判断分数等级是一个很简单的数学问题,只要你输入的这个数字介于两个数字之间既可以判断出这个分数的等级. 代码如下: a=eval(input()) if a>=90: print("A") elif 90>a>=80: print("B") elif 80>a>=70: print("C") elif 70>a&

  • Python+Tkinter绘制一个数字时钟

    Tkinter 实现上述功能并不复杂,只要使用 Tkinter 的相关组件和一些简单的逻辑处理即可,在编写这个案例的过程中大家要做到温故而知新. 程序代码如下所示: from tkinter import * from time import strftime root = Tk() root.geometry('500x350+300+300') root.iconbitmap('C:/Users/Administrator/Desktop/C语言中文网logo.ico') root.titl

随机推荐