【Python022--递归】
一、递归
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'''
---代码分析:

二、练习题:
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--递归】的更多相关文章
- 函数:递归是神马 - 零基础入门学习Python022
函数:递归是神马 让编程改变世界 Change the world by program 我们这节课的主题叫递归是神马,将通过小甲鱼带感的讲解,来告诉大家神马是递归!如果说优秀的程序员是伯乐,那么把递 ...
- .NET 基础 一步步 一幕幕[面向对象之方法、方法的重载、方法的重写、方法的递归]
方法.方法的重载.方法的重写.方法的递归 方法: 将一堆代码进行重用的一种机制. 语法: [访问修饰符] 返回类型 <方法名>(参数列表){ 方法主体: } 返回值类型:如果不需要写返回值 ...
- 算法笔记_013:汉诺塔问题(Java递归法和非递归法)
目录 1 问题描述 2 解决方案 2.1 递归法 2.2 非递归法 1 问题描述 Simulate the movement of the Towers of Hanoi Puzzle; Bonus ...
- Android 算法 关于递归和二分法的小算法
// 1. 实现一个函数,在一个有序整型数组中二分查找出指定的值,找到则返回该值的位置,找不到返回 -1. package demo; public class Mytest { public st ...
- 二叉树的递归实现(java)
这里演示的二叉树为3层. 递归实现,先构造出一个root节点,先判断左子节点是否为空,为空则构造左子节点,否则进入下一步判断右子节点是否为空,为空则构造右子节点. 利用层数控制迭代次数. 依次递归第二 ...
- 递归实现n(经典的8皇后问题)皇后的问题
问题描述:八皇后问题是一个以国际象棋为背景的问题:如何能够在8×8的国际象棋棋盘上放置八个皇后, 使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行.纵行或斜线上 ...
- C语言用分别用递归和循环求数字的阶乘的方法
以下代码均为 自己 实现,嘻嘻! 参考文章:http://blog.csdn.net/talk_8/article/details/46289683 循环法 int CalFactorial(int ...
- C#递归解决汉诺塔问题(Hanoi)
using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace MyExamp ...
- Java之递归求和的两张方法
方法一: package com.smbea.demo; public class Student { private int sum = 0; /** * 递归求和 * @param num */ ...
- C#语言基础——递归
递归 一.概念conception: 函数体内调用本函数自身,直到符合某一条件不再继续调用. 二.应满足条件factor: (1)有反复执行的过程(调用自身): (2)有跳出反复执行过程的条件(函数出 ...
随机推荐
- Request.UrlReferrer注意点
定义: public sealed class HttpRequest { // // 摘要: // 获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL. // // 返回结果: / ...
- 闪存卡被创建pv报错
背景:某机器有2块闪存卡,利用LVM,将其挂载到一个目录供测试使用: 之前厂商已经安装了闪存卡对应的驱动,fdisk可以看到闪存卡信息,但是在pvcreate创建时,遭遇如下错误: # pvcreat ...
- sqli-labs(十二)(and和or的过滤)
第二十五关: 这关是过滤了and 和or 输入?id=1' or '1'='1 发现or被过滤了,将or换成and也一样. 输入?id=1' oorr '1'='1 这样就可以了,将一个or置空后,o ...
- Css预处理器---Less(一)
一.简介: Less是一种动态样式语言,可以在样式中使用变量,继承,运算,函数 二.使用 (1)客户端使用 //引入您的.less样式文件,rel属性区别去css为stylesheet/less &l ...
- windows系统快捷键
1.我的键盘:windows键的开启,需要按住FN键+windows键. 2.windows键 + E,表示打开我的电脑. 3.windows键 + R,打开windows的命令行窗口. 4.wind ...
- python中安装并使用redis
数据缓存系统:1:mongodb:是直接持久化,直接存储于硬盘的缓存系统2:redis: 半持久化,存储于内存和硬盘3:memcache:数据只能存储在内存里的缓存系统 redis是一个key-val ...
- CALL与retn
一.CALL 例如: 004013D9 CALL 00401C4C //ESP = 0060F9C8 004013DE 相当于 sub esp,0x4; //ESP = 0060F9 ...
- php-fpm慢日志配置
upstream timed out (110: Connection timed out) while reading response header from upstream Nginx报错日志 ...
- html5-css边框全
/*div{ width: 500px; height: 300px; background: rgb(122,30,60); border: 10px solid black ...
- Acperience (英语阅读 + 数学推导)
#include<bits/stdc++.h> using namespace std; int main(){ int T,n,m;scanf("%d",&T ...