在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在高中数学中,我们学习过数列。我们知道数列有两种表示方法,一种称为通项公式,即项an和项数n的关系;还有一种称为递推公式,即后一项an和前一项a(n-1)之间的关系。通项公式能够一下子把an求解出来,而递推公式则要根据首项的值多次推导才能把第n项的值慢慢推导出来。如果有一个较为复杂的数列的递推公式,人工将其转化为通项公式或者将其的每一项求出实在非常麻烦,那么我们能不能直接把这个递推公式交给计算机,让它来为我们求解呢?
我们说过,在任何一个函数体内不能出现其它函数的定义。但是,在任一个函数体内可以调用任何函数,包括该函数本身。直接或者间接地在函数体内调用函数本身的现象称为函数的递归。正是函数的递归,能够帮我们解决递推公式求解的问题。 现有一个数列,已知an=2*a(n-1)+3,并且a1=1,求解a1到a8的各项值。我们把数列问题转化为函数问题,认为an=f(n),a(n-1)=f(n-1)……于是f(n)=2*f(n-1)+3,f(n-1)=2*f(n-1-1)+3……直到f(1)=1。我们根据前面的描述写出以下程序:(程序6.6) #include "iostream.h" int f(int n);//看作数列an int main() { for (int i=1;i<=8;i++) { cout <<"f(" <<i <<")=" <<f(i) <<endl;//输出a1到a8的值 } return 0; } int f(int n) { if (n==1) { return 1;//告知a1=1 } else { return 2*f(n-1)+3;//告诉电脑f(n)=2*f(n-1)+3 } } 运行结果: f(1)=1 f(2)=5 f(3)=13 f(4)=29 f(5)=61 f(6)=125 f(7)=253 f(8)=509 这个是不是跟C#的思路一样? |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论