• 特殊函数


    带默认形参值的函数、重载函数、内联函数、递归函数

    1、带默认形参值的函数
    带默认值的形参必须定义在形参列表的后面。
    void fun(int p1,int p2=10); //正确
    void fun(int p1=10,int p2); //错误

    2、重载函数
    形参个数不同,或数据类型不同,那么这两个函数可以重名。
    int Max(int x,int y){return((x>y)?x:y);}
    double Max(double x,double y){return((x>y)?x:y);}
    编译器会根据实参个数、类型,自动调用形参最匹配的那个重载函数。

    3、内联函数
    “主函数+子函数”的效率会降低,涉及函数跳转和数据传递。
    内联函数,将函数代码直接嵌入到调用语句处,不再进行函数跳转和数据传递。
    使用方式:子函数前加inline关键字即可。
    inline int Max(int x,int y){return((x>y)?x:y);}

    注意:
    复杂函数不能定义为内联函数。内联函数需是简单的函数,对复杂函数体(如循环)编译器会自动按非内联方式编译。
    一般将频繁调用的函数定义为内联函数。

    4、递归函数,效率低
    直接或间接调用自身的函数称为递归函数。

    函数类型 函数名(形参列表){
      ....
      if(递归终结条件)
        取得已知结果
      else
        递归公式,调用自身
      ....
    }

    递归法求解N!,由繁到简,称为逆向递推,依次求N!、(N-1)!、(N-2)!、...

    #include<iostream>
    using namespace std;
    
    int Factorial(int N)
    {
        int result;
        if(N==1)
            result=1; //已知结果,1!=1
        else
            result=N*Factorial(N-1);  //f(n)=n*f(n-1)递归公式
        return result;
    }
    int main(){
        int x=Factorial(3); //3!
        cout<<x<<endl;
        return 0;
    }

    递推法求解N!,由简到繁,逐步逼近,称为正向递推,依次求1!、2!、3!、...,效率高

    #include<iostream>
    using namespace std;
    
    int Factorial(int N)
    {    
        int result=1;
        for (int i = 1; i <= N; i++)
        {
            result = result*i;
        }
        return result;
    }
    int main() {
        int x = Factorial(3); //3!
        cout << x << endl;
        return 0;
    }
  • 相关阅读:
    Android -- 经验分享
    Android -- 获取汉字的首字母
    Android -- PowerManager和PowerManager.WakeLock
    内存堆和栈的区别
    Java BigDecimal大数字操作
    myqsl for C# 驱动包下载地址-官网
    ASP.NET 查询客户端请求IP地址
    Chapter 6 — Improving ASP.NET Performance
    WebSocket 支持的浏览器
    Local System、Local Service與Network Service
  • 原文地址:https://www.cnblogs.com/xixixing/p/10156119.html
Copyright © 2020-2023  润新知