博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ && C# 函数的递归调用
阅读量:4571 次
发布时间:2019-06-08

本文共 869 字,大约阅读时间需要 2 分钟。

在高中数学中,我们学习过数列。我们知道数列有两种表示方法,一种称为通项公式,即项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#的思路一样? 

转载于:https://www.cnblogs.com/Luouy/archive/2012/08/09/2630467.html

你可能感兴趣的文章
grep、awk、sed命令详解1
查看>>
Jenkins邮件配置
查看>>
MYSQL数据库的设计与调优
查看>>
在Apache下开启SSI配置
查看>>
多线程上下文切换
查看>>
基于django后端的html、js简单实现含中文csv文件下载
查看>>
MySQL的InnoDB的幻读问题
查看>>
【转】 HTML解析:基于XPath的C#类库HtmlAgiliytyPack
查看>>
传递引用
查看>>
POJ 1611.The Suspects
查看>>
新的环境 新的生活 新的开始
查看>>
给有C或C++基础的Python入门 :Python Crash Course 1 - 3
查看>>
mysql的查询、子查询及连接查询
查看>>
GJM : Unity调用系统窗口选择本地文件
查看>>
curl命令学习之一--基本用法
查看>>
ESP8266或ESP32使用ESP-IDF开发读取DHT12温度湿度
查看>>
高效管理项目的秘密武器:累积流图
查看>>
2、计算器
查看>>
matplotlib 画图
查看>>
DFS专题 Sum It Up
查看>>