一、递归
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)有跳出反复执行过程的条件(函数出 ...
随机推荐
-
solr与.net系列课程(一)solr的安装与配置
不久之前开发了一个项目,需要用到solr,因为所以在开始再网上查找资料,但是发现大部分的资料都是很片面的,要么就是只讲解solr如何安装的,要么就是只讲解solr的某一个部分的,而且很多都是资料都是一 ...
-
jQuery掷骰子
网上找的jQuery掷骰子效果,测试兼容IE7及以上浏览器,IE6没有测试 js代码如下: $(function(){ var dice = $("#dice"); dice.cl ...
-
使用PowerShell快速部署Win12R2虚拟化桌面
PowerShell一直是微软windows_Server产品中重要的一部分,可以通过PowerShell来完成所有的服务器配置,甚至一些在图形界面下无法完成的事情.随着每一个新版本的微软产品或者服务 ...
-
ECB cspk7 加密
public function test(){ $param = input('param.'); // $input = 'userid=7&gameid=100107&buycou ...
-
angular下载安装
1.下载安装nodejs 官方地址:https://nodejs.org/en/download/ 2.验证是否安装成功 node -v npm -v 公司内网需要设置代理 npm confi ...
-
.net 缓存
缓存有很多实现方法,所有这些可以被分为两类,基于内存的缓存和基于磁盘的缓存: 1. 内存驻留缓存——包含在内存中临时存储数据的所有实现方法,通常在以下情况下使用: a) 应用程序频繁使用 ...
-
python快速入门——进入数据挖掘你该有的基础知识
这篇文章是用来总结python中重要的语法,通过这些了解你可以快速了解一段python代码的含义 Python 的基础语法来带你快速入门 Python 语言.如果你想对 Python 有全面的了解请关 ...
-
Vue 实现微信 jssdk 扫码, 上传图片
流程 1: 配置微信公众号JS域名 2:前端发送URL后台获取JSSDK配置, 后台Service代码如下, 修改2处位置: WeixinUtil.APPID => 当前公众号APPID Wei ...
-
原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 1、初露锋芒
说明:MvcMovieStore项目已经发布上线,想了解最新版本功能请登录 MVC 影视(MvcMovie.cn) 进行查阅.如需转载,请注明出处:http://www.cnblogs.com/Dod ...
-
Python和其他语言的区别 (简单精辟啊 手打)
首先是简单 读和写非常容易 免费 免费且开源 社区为专业人士和初学者提供知识和经验的分享交流平台 兼容性 与多平台兼容 面向对象 支持面向对象编程 php面向网络 函数库 python 社区创建了丰富 ...