精华内容
下载资源
问答
  • 什么是递归函数

    万次阅读 多人点赞 2018-02-21 09:42:10
    递归函数 递归 例题 特点 效率 优点 递归函数 递归 递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。 当函数在一直...

    递归函数

    递归

    递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件
    当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件
    所以递归要有两个要素,结束条件与递推关系

    注:

    递归的时候,每次调用一个函数,计算机都会为这个函数分配新的空间,这就是说,当被调函数返回的时候,调用函数中的变量依然会保持原先的值,否则也不可能实现反向输出。

    例题

    1. 计算n的阶乘
    #include <stdio.h> 
    int factorial(int n)
    {
        int result;
        if (n<0)                                          //判断例外
        {
            printf("输入错误!\n");
            return 0;
        } 
        else if (n==0 || n==1)
        {
            result = 1;  //回推墙
        }
        else
        {
            result = factorial(n-1) * n;  //递推关系,这个数与上一个数之间的关系。
        }
        return result;
    }
    
    int main(){
        int n = 5;                                              //输入数字5,计算5的阶乘
        printf("%d的阶乘=%d",n,factorial(n));
        return 0;
    }
    

    程序在计算5的阶乘的时候,先执行递推,当n=1或者n=0的时候返回1,再回推将计算并返回。由此可以看出递归函数必须有结束条件

    1. 斐波那契数列

    斐波那契数列指的是这样一个数列:

    0, 1, 1, 2, 3, 5, 8, 13, 21, ···
    

    这个数列从第三项开始,每一项都等于前两项之和.

    #include <stdio.h>
    
    long fibonacci( long num )
    {
        if ( num == 0 || num == 1 )
        {
            return num;
        }
        else
        {
            return fibonacci( num -1 ) + fibonacci( num -2 );
        }
    }
    
    void main()
    {
        long number;
        puts("请输入一个正整数: ");
        scanf("%ld", &number);
        printf("斐波那契数列第%ld项为: %ld\n", number, fibonacci( number ) );
    
    }
    
    

    这里写图片描述

    1. 应用题~~

    小明为了学好英语,需要每天记单词,第一天记1个,第二天记2个依次类推,请用代码完成,算出小明第10天开始的时候会了多少个单词?

    分析:
    墙(结束条件)是“第一天记1个”
    递推关系是“第n天记的单词= 第n-1天记的单词数量+n"

    #include <stdio.h>
    /* 定义获取单词数量的函数 */
    int getWordNumber(n)
    {   
        if(n == 1)
        {
            return 1;    //回推墙
        }
        else{
            return getWordNumber(n-1)+n ;       //递推关系
        }
    }
    int main()
    {
        int num = getWordNumber(10);     //获取会了的单词数量
        printf("小明第10天记了:%d个单词。\n", num);
        return 0;
    }
    

    特点

    递归函数特点:

    1. 每一级函数调用时都有自己的变量,但是函数代码并不会得到复制,如计算5的阶乘时每递推一次变量都不同;
    2. 每次调用都会有一次返回,如计算5的阶乘时每递推一次都返回进行下一次;
    3. 递归函数中,位于递归调用前的语句和各级被调用函数具有相同的执行顺序;
    4. 递归函数中,位于递归调用后的语句的执行顺序和各个被调用函数的顺序相反;
    5. 递归函数中必须有终止语句。
    

    一句话总结递归:自我调用且有完成状态。

    效率

    1. 系统栈(也叫核心栈、内核栈)
      是内存中属于操作系统空间的一块区域,其主要用途为: (1)保存中断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出; (2)保存操作系统子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。

    2. 用户栈
      是用户进程空间中的一块区域,用于保存用户进程的子程序间相互调用的参数、返回值、返回点以及子程序(函数)的局部变量。
      我们编写的递归程序属于用户程序,因此使用的是用户栈。

    3. 栈溢出
      函数调用的参数是通过栈空间来传递的,在调用过程中会占用线程的栈资源。而递归调用,只有走到最后的结束点后函数才能依次退出,而未到达最后的结束点之前,占用的栈空间一直没有释放,如果递归调用次数过多,就可能导致占用的栈资源超过线程的最大值,从而导致栈溢出,导致程序的异常退出。

    综上:

    函数调用的时候,每次调用时要做地址保存,参数传递等,这是通过一个递归工作栈实现的。具体是每次调用函数本身要保存的内容包括:局部变量、形参、调用函数地址、返回值。那么,如果递归调用N次,就要分配N次局部变量、N次形参、N次调用函数地址、N次返回值,势必效率低.

    优点

    1. 代码简洁、清晰,易懂

    循环能干的事,递归都能干;递归能干的循环不一定能干

    对于我们,能用循环解决的,尽量不适用递归.

    展开全文
  • 什么是纯虚函数 纯虚函数的作用 如何定义使用纯虚函数   一 定义: 纯虚函数是一种特殊的虚函数,它的一般格式如下:   class <类名>   {   virtual <类型><函数名>(&...
    什么是纯虚函数 纯虚函数的作用 如何定义使用纯虚函数  


    一 定义:

    纯虚函数是一种特殊的虚函数,它的一般格式如下: 
      class <类名> 
      { 
      virtual <类型><函数名>(<参数表>)=0; 
      … 
      }; 
      在许多情况下,在基类中不能对虚函数给出有意义有实现,而把它说明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

    二 引入原因:

    1、为了方便使用多态特性,我们常常需要在基类中定义虚拟函数。 
      2、在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常理。 
      为了解决上述问题,引入了纯虚函数的概念,将函数定义为纯虚函数(方法:virtual ReturnType Function()= 0;),则编译器要求在派生类中必须予以重载以实现多态性。同时含有纯虚拟函数的类称为抽象类,它不能生成对象。这样就很好地解决了上述两个问题。

    三 特性:

     

    1、多态性

      指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。C++支持两种多态性:编译时多态性,运行时多态性。

      a.编译时多态性:通过重载函数实现

      b 运行时多态性:通过虚函数实现。

      2、虚函数

      虚函数是在基类中被声明为virtual,并在派生类中重新定义的成员函数,可实现成员函数的动态重载

      3、抽象类

      包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。

     
    展开全文
  • 构造函数的作用:用于新建对象的初始化工作。...每当创建对象时,需要添加初始化代码时,则需要定义自己的构造函数;而对象撤销时,需要自己添加清理工作的代码时,则需要定义自己的析构函数。 ...

    构造函数的作用:用于新建对象的初始化工作。
     析构函数的作用:用于在撤销对象前,完成一些清理工作,比如:释放内存等。
     每当创建对象时,需要添加初始化代码时,则需要定义自己的构造函数;而对象撤销时,需要自己添加清理工作的代码时,则需要定义自己的析构函数。

    展开全文
  • 什么是函数什么是函数

    千次阅读 2020-08-18 10:38:10
    什么是函数什么是函数函数:解析式中明显地用一个变量的代数式表示另一个变量时,称为显函数。显函数可以用y=f(x)来表示。  隐函数:如果方程F(x,y)=0能确定y是x的函数,那么称这种方式表示的函数是隐函数...

    什么是显函数,什么是隐函数

    显函数:解析式中明显地用一个变量的代数式表示另一个变量时,称为显函数。显函数可以用y=f(x)来表示。
      隐函数:如果方程F(x,y)=0能确定y是x的函数,那么称这种方式表示的函数是隐函数。
      隐函数与显函数的区别:
      1) 隐函数不一定能写为y=f(x)的形式,如x²+y²=0。
      2)显函数是用y=f(x)表示的函数,左边是一个y,右边是x的表达式。比如:y=2x+1。隐函数是x和y都混在一起的,比如2x-y+1=0。
      3)有些隐函数可以表示成显函数,叫做隐函数显化,但也有些隐函数是不能显化的,比如e^y+xy=1。
      转载,侵权转告,秒删,谢谢!

    展开全文
  • Python函数定义函数

    千次阅读 2018-12-07 16:33:38
    函数内部定义函数要在函数内部调用 def paint(): print(&amp;amp;amp;quot;paint&amp;amp;amp;quot;) def paintA(): print(&amp;amp;amp;quot;paintA&amp;amp;amp;quot;) paintA() paint() ...
  • 子类无法重载父类的函数,父类同名函数将被名称覆盖(C++编译器看到名字相同,不会去父类函数中找名字相同函数) 重载是在编译期间根据参数类型和个数决定函数调用 函数重写 必须发生于父类与子类之间 并且...
  • 它们的区别是:(1)纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。 纯虚函数一般没有代码实现部分,如virtual void print() = 0; 而一般虚函数必须要有代码的实现部分,否则会出现函数未定义的...
  • 函数指针和指针函数用法和区别

    万次阅读 多人点赞 2018-05-24 08:11:10
    函数指针和指针函数,在学习 C 语言的时候遇到这两个东西简直头疼,当然还有更头疼的,比如什么函数指针函数、指针函数指针、数组指针、指针数组、函数指针数组等等,描述越长其定义就越复杂,当然理解起来就越难,...
  • 什么是闭包函数

    千次阅读 多人点赞 2020-02-08 12:16:38
    什么是闭包函数 1、定义和用法:当一个函数的返回值是另外一个函数,而返回的那个函数如果调用了其父函数内部的其它变量,如果返回的这个函数在外部被执行,就产生了闭包。(关于概念博主摘抄以上几点,详情查看 ...
  • 什么情况下析构函数需要定义为虚函数

    千次阅读 多人点赞 2017-09-26 08:22:12
    一、什么情况下析构函数需要定义为虚函数?答案是在实现多态时。如果单单是填空题,相信大家都可以拿满分。但说到何谓之多态,可能大家的回答不尽相同。至于多态时怎样实现的?又有什么样的作用呢?这样深入逼问下去...
  • 1、函数定义 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。Shell 函数定义的语法格式如下: [function] funname [()]{ 函数体 [return int;] } 格式1: 简化写法,不写 function 关键字: ...
  • 函数定义 函数与过程 返回值与返回值类型 前向引用 内部/内嵌函数 函数装饰器 传递函数 参数的种类 位置参数 参数默认值 命名关键字参数 关键字参数:**others,便于函数功能的扩展 任意的参数列表 *...
  • MATLAB02:结构化编程和函数定义

    万次阅读 多人点赞 2019-11-13 13:43:31
    文章目录MATLAB02:结构化编程和函数定义结构化编程流程控制语句和逻辑运算符流程控制语句示例使用循环语句应尽量预先分配内存空间 MATLAB02:结构化编程和函数定义 结构化编程 流程控制语句和逻辑运算符 与大多数编程...
  • 在用C++写函数时,在函数定义中的WINAPI代表什么含义?例如:BOOL WINAPI IsNumeric(char *chString)与BOOL IsNumeric(char *chString)有什么区别? WINAPI其实就是__stdcall。 而__stdcall是C/C++调用约定的...
  • 什么是函数式接口?

    千次阅读 2020-06-02 12:17:17
    函数式接口就是只定义一个抽象方法的接口,如下例子: Java API中也有一些函数式接口 如Runnable接口类: Callable接口类: 同时只要接口只定义了一个抽象方法,那它就还是一个函数式接口,哪怕这个接口有好多...
  • }///箭头函数定义函数 var aaa=(a,b)=>{return a+b;} this指向function传统定义的函数,this指向随着调用环境的改变而改变,而箭头 函数中的指向则是固定不变,一直指向定义环境的。 ///function定义函数中的this...
  • 指数函数对数函数导数定义推导

    千次阅读 2019-02-19 20:28:51
    对 和 求导的推导做一个总结。 我以前接触到的推法是: 首先记住  , 之后 的导数可以根据对数的导数推导如下: ...令 , 所以 ,俩边求导, 根据复合函数求导...理解一个东西,还是得从定义上去理解,找了一个百度百...
  • 当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。 2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设置触发条件,就是...
  • python中函数定义以及如何编写一个函数

    万次阅读 多人点赞 2019-06-30 18:06:52
    1.函数定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段 函数能提高应用的模块性,和代码的重复利用率 Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户...
  • C++的函数声明、函数定义、函数调用

    万次阅读 多人点赞 2019-07-02 17:30:05
    如果使用自己定义函数,这个函数在调用它的函数的后面(比如在main函数后面),则必须在调用之前进行函数声明。因为程序是从上到下逐行编译的,若无函数声明,则会无法识别函数函数声明在编译时并不检查参数...
  • 函数定义一般形式

    千次阅读 2019-07-23 13:46:02
    函数定义的一般形式 1.无参函数 定义无参函数的一般形式如下: 类型说明符 函数名() { 声明部分 语句 } 类型说明符,指明了本函数的类型,函数的类型实际上是函数返回值的类型。该类型说明符与前面介绍的各种说明...
  • C语言函数定义和函数调用

    千次阅读 2020-04-01 19:05:47
    1、函数定义 C源程序是由函数组成的。最简单的程序有一个主函数 main(),但实用程序往往由多个函数组成,由 主函数调用其他函数,其他函数也可以互相调用。函数是C源程序的基本模块,程序的许多功能是通过对 函数模块...
  • Python中函数定义及其调用

    万次阅读 多人点赞 2018-07-19 13:00:01
    定义函数–封装独立的功能 2.调用函数–享受封装的成果 函数的作用:在开发时,使用函数可以提高编写的效率以及代码的重用‘’ 函数函数是带名字的代码块,用于完成具体的工作 需要在程序中多次执行同一项...
  • 什么是内联函数

    千次阅读 多人点赞 2018-11-04 22:34:15
    内联函数inline:引入内联函数的目的是为了解决程序中函数调用的效率问题,这么说吧,程序在编译器编译的时候,编译器将程序中出现的内联函数的调用表达式用内联函数函数体...2.内联函数定义必须出现在内联函数...
  • C 函数声明, 函数原型, 函数定义

    千次阅读 2016-11-04 12:22:49
    函数声明的发展1 隐式函数声明 implicit function declaration main 函数和 printf 函数返回值类型为 int, 若不声明, 编译器默认函数返回值为 int 类型 C90标准起,这种写法就步入了被逐步抛弃的过程(尽管当时还没有...
  • python-def函数定义

    万次阅读 多人点赞 2021-01-21 10:43:57
    Python 使用def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的 具体功能实现代码,如果想要函数有返回值, 在 expressions 中的逻辑代码中用return 返回。 2. 实例 def function(): print('...
  • 函数声明、函数原型、函数定义

    万次阅读 2013-01-07 17:20:31
    对函数的“定义”和“声明”不是一回事。“定义”是指对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等,它是一个...从程序中可以看到对函数的声明与函数定义中的函数首部基本上是相同的。因此可以
  • 钩子函数什么

    万次阅读 2018-08-25 18:40:33
    什么是钩子函数? 先来看一段百科:钩子函数是Windows消息处理机制的一部分,通过设置“钩子”,应用程序可以在系统级对所有消息、事件进行过滤,访问在正常情况下无法访问的消息。钩子的本质是一段用以处理系统...
  • 中外 凸凹函数定义是相反的

    千次阅读 2016-06-03 13:28:17
    看国外的公开课,说二次导数大于零时是凸函数,高数上说是...注意:中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的。Convex Function在某些中国大陆的数学书中指凹函数。Concave Function指凸函数。但
  • %函数名为average,输入参数为一向量 %输入为非向量时报错 [m,n] = size(x); if (~((m == 1) || (n == 1)) || (m == 1 && n == 1)) error('Input must be a vector') end y = sum(x)/length(x); end ![图片说明]...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,042,948
精华内容 1,617,179
关键字:

函数相同的定义是什么