嘿嘿 没想到吧 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