Python递归

嘿嘿 没想到吧 Python也有递归

和上期c++递归一样 我会放点案例

当然 肯定有些东西和c++谁不一样的

_____________________________________________________________________________

简介:

首先 c++的函数有两种

第一是用类型定义(有long long,int bool,char,float,double等等)

第二是用void类型定义 

但是 Python只有一种 就是def 

又是但是 只要用这一种就可以完成c++两种定义函数方式

_____________________________________________________________________________

下面 正文开始:

Python的递归就是在函数里使用函数 以return 1结束

下面 先整个案例 输出斐波那契数列:

def fi(a):#输出斐波那契数列
    if a==1 or a==2:
        return 1#停止套用
    else:
        return fi(a-1)+fi(a-2)#递归简单来说就是在函数里套用函数

def fb(n,x):#输出n~x之间的斐波那契数列
    for i in range(1,x):
        if fi(i)<n:continue#如果没到n就继续
        if fi(i)>x:break#如果超出x了就跳出循环
        if fi(i)>n and fi(i)<x:print(fi(i),end=" ")#如果刚刚好 就输出

a=int(input())#输入a
b=int(input())#输入b
fb(a,b)#a,b放进fb函数里

现在 做一个简单一点的程序

就 阶乘吧

阶乘的定义:n!=n*(n-1)*……*2*1

案例:输入5 输出120   输入6 输出720

我劝你好好写 不要看答案

题解:

def jc(n):#定义函数
    if n<2:#如果小于2(其实1这个数乘不乘都一样)
        return 1#退出
    return n*jc(n-1)#让运用函数的地方获得这个值
n=int(input())
print(jc(n))#输出这个函数的结果

_____________________________________________________________________________

接下来写阶乘和:

阶乘和的定义:n!+(n-1)!+……2!+1!

案例:输入6 输出873     输入8 输出42633

我劝你好好写 不要看答案

题解:

def a(n):
    if n<2:
        return 1
    return n*a(n-1)
def b(n):#定义函数a
    if n<1:#如果小于1(是0或负数)
        return 1#退出函数
    return a(n)+a(n-1)#传参
n=int(input(())
print(b(n))

_____________________________________________________________________________

如果你连这个都写出来了 那么就可以try try看这一道《牛的故事》了:

小牛要在四岁的时候生一头小牛 往后的每一年生一头,

这里假设每头牛都是母的

那么请制作一个输入在第几个年头 输出有几头牛的程序

输入案例:输入7 输出6      输入15 输出129

题解我放到结尾了

_____________________________________________________________________________

def sz(in){
    if n<4:#如果没牛了
        return 1#退出函数
    return sz(n-1)+sz(n-3)#今年的牛数相当于去年的加三年前的 不信你试试看
n=int(input())
print(sz(n))

没错 这就是结尾了awa

_____________________________________________________________________________

其实 有很多模块里的函数都是用def+return写出来的

比如c++里没有的幂运算要用power函数 下面是power函数的原理

当然 想动手尝试一下的人也可以尝试一下

案例:power(7,2)=49

题解:

def power(a,b):
    for i in range(1,b):
        a*=a
    return a
a=int(input())
b=int(input())
print(power(a,b))

还有pi(π),可以用割圆法算:

import turtle as t
a=int(input('分割次数:'))
t.tracer(0)
t.pensize(1)
r=200
t.penup()
t.goto(0,-r)
t.pendown()
t.fillcolor('red')
t.begin_fill()
t.pencolor('darkgreen')
t.circle(r)
t.end_fill()
t.penup()
t.goto(0,0)
t.pendown()
t.pencolor('darkred')
for i in range(a):
    t.forward(r)
    if i==1:
        b=t.distance(200,0)
    t.goto(0,0)
    t.left(360/a)
t.ht()
t.update()
c=a*b
print('所有的边长的和为:',c)
d=c/(2*r)
print('π的近似值为:',d)

套用函数:

import turtle as t
def pi(n):
    t.tracer(0)
    t.pensize(1)
    r=200
    t.penup()
    t.goto(0,-r)
    t.pendown()
    t.fillcolor('red')
    t.begin_fill()
    t.pencolor('darkgreen')
    t.circle(r)
    t.end_fill()
    t.penup()
    t.goto(0,0)
    t.pendown()
    t.pencolor('darkred')
    for i in range(a):
        t.forward(r)
        if i==1:
            b=t.distance(200,0)
        t.goto(0,0)
        t.left(360/a)
    t.ht()
    t.update()
    return a*b/(2*r)
a=int(input('分割次数:'))
print('π的近似值为:',pi(a))

MVP结算:

本期字数:2546

本期质量分:72

  • 15
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值