python 使用递归实现打印一个数字的每一位示例


Posted in Python onFebruary 27, 2020

我就废话不多说了,直接上代码吧!

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

Python 相关文章推荐
python抓取网页图片示例(python爬虫)
Apr 27 Python
wxPython窗口中文乱码解决方法
Oct 11 Python
使用Protocol Buffers的C语言拓展提速Python程序的示例
Apr 16 Python
给Python入门者的一些编程建议
Jun 15 Python
Python简单格式化时间的方法【strftime函数】
Sep 18 Python
python 全文检索引擎详解
Apr 25 Python
利用Celery实现Django博客PV统计功能详解
May 08 Python
在Python中构建增广矩阵的实现方法
Jul 01 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
python学习之panda数据分析核心支持库
May 07 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 Python
python json 递归打印所有json子节点信息的例子
Feb 27 #Python
40行Python代码实现天气预报和每日鸡汤推送功能
Feb 27 #Python
15行Python代码实现免费发送手机短信推送消息功能
Feb 27 #Python
matlab中imadjust函数的作用及应用举例
Feb 27 #Python
浅析matlab中imadjust函数
Feb 27 #Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 #Python
在python中利用dict转json按输入顺序输出内容方式
Feb 27 #Python
You might like
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
Dedecms常用函数解析
2008/02/01 PHP
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php使用curl访问https示例分享
2014/01/17 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
javascript中的107个基础知识收集整理 推荐
2010/03/29 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
理解JS绑定事件
2016/01/19 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
vue-cli配置环境变量的方法
2018/07/09 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
vue.js购物车添加商品组件的方法
2019/09/17 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
[36:41]完美世界DOTA2联赛循环赛FTD vs Magma第一场 10月30日
2020/10/31 DOTA
python生成excel的实例代码
2017/11/08 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
numpy.ndarray 实现对特定行或列取值
2019/12/05 Python
关于numpy数组轴的使用详解
2019/12/05 Python
Python 格式化输出_String Formatting_控制小数点位数的实例详解
2020/02/04 Python
python+selenium+PhantomJS抓取网页动态加载内容
2020/02/25 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Python识别处理照片中的条形码
2020/11/16 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
信息部岗位职责
2013/11/12 职场文书
产品包装策划方案
2014/05/18 职场文书
大学生求职信
2014/06/17 职场文书
国贸专业求职信
2014/06/28 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
PostgreSQL解析URL的方法
2021/08/02 PostgreSQL
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL