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


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

  • 相关阅读:
    git的命令操作指南
    【flask】RestFul的基本鉴权
    linux断电修复
    centos7安装libreoffice
    java -jar 后台启动
    yum安装nginx
    rpm安装mysql
    yum安装redis
    Centos 修改yum源
    centos8安装node.js v12.18.3
  • 原文地址:https://www.cnblogs.com/Luouy/p/2630467.html
Copyright © 2020-2023  润新知