递归是程序算法的一种方式,它是指程序调用自身的编程,也即是函数自己调用自己。它允许一个函数在其定义中直接或间接调用自身的一种方法。
scratch编程,使用画笔或数学运算经常会使用递归算法。最简单的举例,计算从1加到10的结果,就可以用递归来解决。如下示例,每次调用都会数字相加,并将数字减1直至数字为0,其最后输出结果保存在结果变量中。
阶乘是什么
阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。例如所要求的数是4,则阶乘式是1*2*3*4,得到的积是24,24就是4的阶乘。例如所要求的数是6,则阶乘式是1*2*3……×6,得到的积是720,720就是6的阶乘。例如所要求的数是n,则阶乘式是1*2*3……*n,设得到的积是x,x就是n的阶乘。任何大于1的自然数n阶乘表示方法:n!=1*2*3……n 或 n!=n×(n-1)! 5!=5*4*3*2*1=120。
递归算法:
递归算法是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。
一个过程(或函数)直接或间接调
用自己本身,这种过程(或函数)叫递归过程(或函数)。
递归特点:
(1) 递归就是在过程或函数里调用自身。
(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。
scratch递归算法,求阶乘求积举例
5*4*3*2*1的乘积