我们知道在程序设计领域里面会碰到对某个函数的递归调用,同时对于递归调用我们有时候也可以在某些时候转化为非递归调用,转化为非递归调用的目的可以减少栈内存的分配从而减少内存溢出的问题,那么在一般的数学领域中我们也有一些递归的调用的情况,比如在模拟电路中的反馈电路的情况和混沌理论中,某次计算的输出又再次作为计算的输入。因此研究函数递归有实际的意义。
一些常见的周期函数
在研究函数的递归之前,我们先考察一些常见的周期函数,常见的比如y=sin(PI/2 + 2*x*PI), y = (-1)^x, y = 1^x y = x^0, y=0*x。 我们这里只研究x是整数的情况。
对于y = 0*x 来说,我们可以知道对于任何整数x∈Z 来说 y = 0, 函数的周期是1,因为我们可以导出对于任何一个整数x∈Z来说 y都等于常数A的函数:
(1) y = A + 0*x;
对于y=1^x 和 y = x^0 这两个函数来说我们可以知道对于任何整数x∈Z 来说,总是得到y = 1,函数的周期是1,因此我们可以导出对于任何一个整数x∈Z 来说y等于常数A的函数:
(2) y = A*1^x
(3) y = A*x^0
(4) y = A - 1 + 1^x
(5) y = A - 1 + x^0
对于 y= (-1)^x 和 y = sin (PI/2 - 2*x*PI) 来说, 对于任何x∈Z 来说当x为奇数时y=-1 , 而当x为偶数时y=1, 函数的周期是2, 因此我们可以导出对于任何一个整数x∈Z,来说当x为奇数时y的值等于常数A,而x为偶数时y的值为B的函数。
对此我们可以定义一个线性函数y = ax+b。 并假设当x=-1时y=A, 当x=1时y=B。那么这个线性函数的解析式为:
y = (B-A)/2 * x + (B+A)/2 其中的a=(B-A)/2, b = (B+A)/2
因为我们规定x只能是-1,和1,因此我们把y=(-1)^x 和y = sin(PI/2 - 2*x*PI) 代入得到:
(6) y = (B-A)/2 * (-1)^x + (B+A)/2
(7)y = (B-A)/2 *sin(PI/2 - 2 *x *PI) + (B+A)/2