• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++&&C#函数的递归调用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
在高中数学中,我们学习过数列。我们知道数列有两种表示方法,一种称为通项公式,即项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#的思路一样? 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++运算符优先级发布时间:2022-07-13
下一篇:
单链表的C++实现(采用模板类)发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap