函数的递归及科赫曲线绘制
1 递归的定义
递归:在函数中调用自己本身
阶乘的例子表现了递归的两个特征:
1、存在一个或多个基例,基例不需要再次递归,它是确定的表达式
2、所有递归链要已一个或多个基例结尾
2 递归的使用方法
阶乘的计算
根据用户输入的整数n,计算并输出n的阶乘值(本例n取10,12.56两种形式数值)
定义fact()函数
fact()函数通过if语句给出n为0的基例,当n==0时,fact()函数返回数值1,不再递归;n!=0时,通过递归返回n与n-1阶乘的乘积
负数和小数则通过abs()与int()函数将对应数值转换为非负整数
注意:若基例的构建错误则递归无法返回将会报错**
字符串的反转
输入字符串n ,输出反转后的字符串
错例如下图
此错误表明系统无法执行reverse()函数创建的递归
reverse()函数没有基例,递归层数超过最大(默认情况为1000),此时需通过下面的代码设定一个新的递归层数
上面的方法较为麻烦,可以通过设置基例为最短形式(空字符串)来进行
正确代码为下图
科赫曲线绘制
形状类似雪花,也称雪花曲线
科赫曲线的基本概念和绘制方法如下:
正整数n代表科赫曲线的阶数,表示生成科赫曲线过程的操
作次数。科赫曲线初始化阶数为0,表示一个长度为L的直线。
对于直线L,将其等分为三段,中间一段用边长为L/3的等边三
角形的两个边替代,得到1阶科赫曲线,它包含四条线段。进
一步对每条线段重复同样的操作后得到2阶科赫曲线。继续重
复同样的操作n次可以得到n阶科赫曲线。
一阶科赫曲线
n阶科赫曲线的雪花效果