【Python022--递归】

时间:2022-09-24 19:22:41

一、递归

1、写一个求阶乘的函数

--正整数阶乘指从1乘以2乘以3乘以4一直乘到所要求的数

--普通的代码编写方式:

def factorial(n):
    result = n
    for i in range(1,n):
        result *=i

return result

member = int(input('请输入一个整数:'))
result = factorial(member)
print('%d 的阶乘是:%d' %(member,result))

'''执行结果:
请输入一个整数:6
6 的阶乘是:720'''

---递归的代码编写方式(满足递归的条件:1、调用函数自身,2、设置了正确的自身返回值)

def factorial(n):
    if n == 1:
        return 1
    else:
        return n*factorial(n-1)

member = int(input("请输入一个整数:"))
result = factorial(member)
print("%d 的阶乘是:%d" %(member,result))

'''执行结果:
请输入一个整数:8
8 的阶乘是:40320'''

---代码分析:

【Python022--递归】

二、练习题:

1、思考一下,按照递归的特性,在编程中有没有不得不使用递归的情况?

例如:汉诺塔,目录索引(因为你永远不知道这个目录里边是否还有目录),快速排序,树结构的定义等如果使用递归,会事半功倍,负责呆滞程序无法实现或相当难以理解

2、使用递归编写一个power()函数模拟内建函数pow(),即power(x,y)为计算并返回x的y次幂的值

print('=====递归写法=====')
def power(x, y):
    if y:
        return x * power(x, y-1)
    else:
        return 1
    
print(power(2, 3))

print('=====普通编写=====')
def poewr(x,y):
    length = len(y)
    for i in range(length):
        result = x*i

return result

print(power(2,3))

'''
执行结果:
=====递归写法=====
8
=====普通编写=====
8'''

【Python022--递归】的更多相关文章

  1. 函数:递归是神马 - 零基础入门学习Python022

    函数:递归是神马 让编程改变世界 Change the world by program 我们这节课的主题叫递归是神马,将通过小甲鱼带感的讲解,来告诉大家神马是递归!如果说优秀的程序员是伯乐,那么把递 ...

  2. .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]

    方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...

  3. 算法笔记&lowbar;013&colon;汉诺塔问题(Java递归法和非递归法)

    目录 1 问题描述 2 解决方案  2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...

  4. Android 算法 关于递归和二分法的小算法

     // 1. 实现一个函数,在一个有序整型数组中二分查找出指定的值,找到则返回该值的位置,找不到返回 -1. package demo; public class Mytest { public st ...

  5. 二叉树的递归实现&lpar;java&rpar;

    这里演示的二叉树为3层. 递归实现,先构造出一个root节点,先判断左子节点是否为空,为空则构造左子节点,否则进入下一步判断右子节点是否为空,为空则构造右子节点. 利用层数控制迭代次数. 依次递归第二 ...

  6. 递归实现n(经典的8皇后问题)皇后的问题

    问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上 ...

  7. C语言用分别用递归和循环求数字的阶乘的方法

    以下代码均为 自己 实现,嘻嘻! 参考文章:http://blog.csdn.net/talk_8/article/details/46289683 循环法 int CalFactorial(int ...

  8. C&num;递归解决汉诺塔问题&lpar;Hanoi&rpar;

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace MyExamp ...

  9. Java之递归求和的两张方法

    方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ ...

  10. C&num;语言基础——递归

    递归 一.概念conception: 函数体内调用本函数自身,直到符合某一条件不再继续调用. 二.应满足条件factor: (1)有反复执行的过程(调用自身): (2)有跳出反复执行过程的条件(函数出 ...

随机推荐

  1. solr与&period;net系列课程&lpar;一&rpar;solr的安装与配置

    不久之前开发了一个项目,需要用到solr,因为所以在开始再网上查找资料,但是发现大部分的资料都是很片面的,要么就是只讲解solr如何安装的,要么就是只讲解solr的某一个部分的,而且很多都是资料都是一 ...

  2. jQuery掷骰子

    网上找的jQuery掷骰子效果,测试兼容IE7及以上浏览器,IE6没有测试 js代码如下: $(function(){ var dice = $("#dice"); dice.cl ...

  3. 使用PowerShell快速部署Win12R2虚拟化桌面

    PowerShell一直是微软windows_Server产品中重要的一部分,可以通过PowerShell来完成所有的服务器配置,甚至一些在图形界面下无法完成的事情.随着每一个新版本的微软产品或者服务 ...

  4. ECB cspk7 加密

    public function test(){ $param = input('param.'); // $input = 'userid=7&gameid=100107&buycou ...

  5. angular下载安装

    1.下载安装nodejs 官方地址:https://nodejs.org/en/download/   2.验证是否安装成功 node -v npm -v   公司内网需要设置代理 npm confi ...

  6. &period;net 缓存

    缓存有很多实现方法,所有这些可以被分为两类,基于内存的缓存和基于磁盘的缓存: 1.  内存驻留缓存——包含在内存中临时存储数据的所有实现方法,通常在以下情况下使用: a)       应用程序频繁使用 ...

  7. python快速入门——进入数据挖掘你该有的基础知识

    这篇文章是用来总结python中重要的语法,通过这些了解你可以快速了解一段python代码的含义 Python 的基础语法来带你快速入门 Python 语言.如果你想对 Python 有全面的了解请关 ...

  8. Vue 实现微信 jssdk 扫码&comma; 上传图片

    流程 1: 配置微信公众号JS域名 2:前端发送URL后台获取JSSDK配置, 后台Service代码如下, 修改2处位置: WeixinUtil.APPID => 当前公众号APPID Wei ...

  9. 原创:MVC 5 实例教程&lpar;MvcMovieStore 新概念版&colon;mvc5&period;0&comma;EF6&period;01&rpar; - 1、初露锋芒

    说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC 影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dod ...

  10. Python和其他语言的区别 (简单精辟啊 手打)

    首先是简单 读和写非常容易 免费 免费且开源 社区为专业人士和初学者提供知识和经验的分享交流平台 兼容性 与多平台兼容 面向对象 支持面向对象编程 php面向网络 函数库 python 社区创建了丰富 ...