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

    万次阅读 多人点赞 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. 代码简洁、清晰,易懂

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

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

    展开全文
  • python中quote函数什么意思

    万次阅读 2019-01-08 14:11:40
    假如你的 name 或者 value 中有『&』或者『=』等符号,就当然会有问题。所以URL中的参数字符串也需要把『&=』等符号进行编码。 URL编码的方式是把需要编码的字符转化为 %xx 的形式。通常 URL 编码是基于 UTF-8 的...

    https://zhidao.baidu.com/question/1047750056353229099.html

    在 Python2.x 中的用法是:
    urllib.quote(text)
    Python3.x 中是
    urllib.parse.quote(text)
    按照标准, URL 只允许一部分 ASCII 字符(数字字母和部分符号),其他的字符(如汉字)是不符合 URL 标准的。
    所以 URL 中使用其他字符就需要进行 URL 编码。

    URL 中传参数的部分(query String),格式是:
    name1=value1&name2=value2&name3=value3
    假如你的 name 或者 value 值中有『&』或者『=』等符号,就当然会有问题。所以URL中的参数字符串也需要把『&=』等符号进行编码。

    URL编码的方式是把需要编码的字符转化为 %xx 的形式。通常 URL 编码是基于 UTF-8 的(当然这和浏览器平台有关)。
    例子:
    比如『我』,unicode 为 0x6211, UTF-8 编码为 0xE6 0x88 0x91,URL 编码就是
    %E6%88%91

     

    展开全文
  • sqlserver中的表值函数和标量值函数

    千次阅读 2017-11-14 17:41:07
    顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一、表值函数 用户定义表值函数返回 table 数据类型,表是单个 SELECT 语句的结果集。 以下示例: CREATE FUNCTION F3_GetEmployeeSalary ( @EmployeeID...

    顾名思义:表值函数返回的是表,而标量值函数可以返回基类型

    一、表值函数

    用户定义表值函数返回 table 数据类型,表是单个 SELECT 语句的结果集。

    以下示例:

    CREATE FUNCTION F3_GetEmployeeSalary
    (
    	@EmployeeID VARCHAR(50) --参数
    )
    RETURNS TABLE  --返回类型为表
    AS
    RETURN
    (
    	SELECT * FROM dbo.TEmployee
    	WHERE EmployeeID = @EmployeeID   --通过一条sql查询语句获取表中数据
    )
    
     --函数调用
    SELECT * FROM F3_GetEmployeeSalary('1')
    注意:

    1)只能返回Table,returns后边一定是table

    2)as后面没有begin/end,只有一个return语句返回特定的记录


    对于多语句表值函数,在 BEGIN...END 语句块中定义的函数体包含一系列 Transact-SQL 语句,这些语句可生成行并将其插入将返回的表中。

    以下示例:

    CREATE FUNCTION [dbo].[F_SQLSERVER_SPLIT](@Long_str varchar(8000),@split_str varchar(100))    
    RETURNS  @tmp TABLE(        
        ID int IDENTITY PRIMARY KEY,      
        short_str varchar(8000)    
    )    
    AS   
    BEGIN   
        DECLARE @long_str_Tmp varchar(8000),@short_str varchar(8000),@split_str_length int   
        SET @split_str_length = LEN(@split_str)    
        IF CHARINDEX(@split_str,@Long_str)=1 
             SET @long_str_Tmp=SUBSTRING(@Long_str,@split_str_length+1,LEN(@Long_str)-@split_str_length)
        ELSE
             SET @long_str_Tmp=@Long_str
        IF CHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))>1    
            SET @long_str_Tmp=@long_str_Tmp+@split_str    
        ELSE   
            SET @long_str_Tmp=@long_str_Tmp    
        IF CHARINDEX(@split_str,@long_str_Tmp)=0
            Insert INTO @tmp select @long_str_Tmp 
        ELSE
            BEGIN
                WHILE CHARINDEX(@split_str,@long_str_Tmp)>0    
                    BEGIN   
                        SET @short_str=SUBSTRING(@long_str_Tmp,1,CHARINDEX(@split_str,@long_str_Tmp)-1)    
                        DECLARE @long_str_Tmp_LEN INT,@split_str_Position_END int   
                        SET @long_str_Tmp_LEN = LEN(@long_str_Tmp)    
                        SET @split_str_Position_END = LEN(@short_str)+@split_str_length    
                        SET @long_str_Tmp=REVERSE(SUBSTRING(REVERSE(@long_str_Tmp),1,@long_str_Tmp_LEN-@split_str_Position_END))
                        IF @short_str<>'' Insert INTO @tmp select @short_str    
                    END           
            END
        RETURN     
    END
    
    --函数调用
    select * from F_SQLSERVER_SPLIT('a,b,c',',')
    
    注意:

    1)returns后面直接定义返回的表类型,首先是定义表名,表明前面要加@,然后是关键字TABLE,最后是表的结构。(实质上是定义了一个表变量)

    2)在begin/end语句块中,直接将需要返回的结果insert到returns定义的表中就可以了,在最后return时,会将结果返回。

    3)最后只需要return,return后面不跟任何变量。(返回的是表变量里面的数据)

    二、标量值函数

    以下示例:

    CREATE FUNCTION dbo.F3_GetMax
    (
    	@a INT,   --函数的两个参数
    	@b INT
    )
    RETURNS INT --返回类型为INT
    AS
    BEGIN
    	DECLARE @max INT;
    	IF(@a>=@b)
    	BEGIN
    		SET @max = @a;
    	END
    	ELSE
    	BEGIN
    		SET @max = @b
    	END
    
    	RETURN @max;  --最后return返回@max中的值
    END
    
    --调用函数
    SELECT dbo.F3_GetMax(2,3);
    注意:

    (1)必须使用两部分组成函数的名字来调用函数,即所有者.对象名,如dbo.F3_GetMax(2,3)

    (2)所有的传入参数前必须加@

    (3)不要写漏和写错关键字,如as,returns,return

    (4)returns后面不是跟一个变量,而是跟变量的返回值类型

    (5)在begin/end语句块中,使用的是return


    展开全文
  • Matlab中的abs函数什么意思

    千次阅读 2017-03-15 22:47:00
    Matlab中的abs(x)是去绝对值的函数 例如:x=-1.23 abs(x) ans 1.23 以上即是取了-1.23的绝对值 此外,Matlab中还有一些内置函数,可以直接调用 函数名 功能描述 acos(x) 计算arccos(x)的 asin(x) 计算...

    Matlab中的abs(x)是去绝对值的函数
    例如:x=-1.23
              abs(x)
              ans
                    1.23
    以上即是取了-1.23的绝对值
    此外,Matlab中还有一些内置函数,可以直接调用
    函数名                      功能描述
    acos(x)                     计算arccos(x)的值
    asin(x)                      计算arcsin(x)的值
    atan(x)                     计算arctan(x)的值
    atan2(y,x)                 计算arctan(y/x)的值
    cos(x)                       计算余弦
    exp(x)                      计算e的x次方
    mod(x,y)                  计算余数
    sqrt(x)                      计算平方根
    ceil(x)                       向正无穷取整
    fix(x)                        向零取整
    floor(x)                    向负无穷取整
    round(x)                  四舍五入取整
    Char(x)                    将数字转换为字符(数字范围0~255)
    Double(x)                将字符转换为数字
    int2str(x)                 将整型数字转换为字符
    num2str(x)              将有小数的数字转换为字符
    str2num(x)              数字转换为数字

    转载于:https://my.oschina.net/wangsifangyuan/blog/860261

    展开全文
  • 范式 函数依赖 多值依赖

    千次阅读 多人点赞 2020-12-30 22:11:33
    第一范式、第二范式、第三范式、第四范式、第五范式、扩展第三范式、函数依赖、完全函数依赖、部分函数依赖、传递函数依赖、平凡函数依赖、多值依赖,定义、举例、图解、关系
  • C++ 中函数后面跟const是什么意思

    千次阅读 2012-11-23 11:50:21
    C++ 中函数后面跟const是什么意思 问题:c++:void display( ) const 中的const是什么意思? 简答: 意思是除了表明了mutable的成员变量以外 该类的其他的成员变量在这个函数内一律不能修改。 详细: 加...
  • Javascript函数返回

    千次阅读 2018-11-11 10:01:01
    Javascript函数返回
  • 在本文中,我们将学习贝尔曼方程和价值函数。 回报和返还(return) 正如前面所讨论的,强化学习agent如何最大化累积未来的回报。用于描述累积未来回报的词是返还,通常用R表示。我们还使用一个下标t来表示某个时间...
  • (转)C语言函数返回值什么意思

    千次阅读 2012-03-15 17:05:05
    所谓函数返回值是一个函数在运算结束以后向调用它的母函数或者系统反馈一个,这个可以是各种变量类型.举个简单的例子:int add(int a,int b){ return (a+b);}int main(){ int res; res=add(3,
  • quote函数什么意思,怎么用

    万次阅读 2017-04-11 10:04:43
    quote函数 属于urllib库里面的一个函数 屏蔽特殊的字符、比如如果url里面的空格!url里面是不允许出现空格的。 按照标准, URL 只允许一部分 ASCII 字符(数字字母和部分符号),其他的字符(如汉字)是不符合...
  • 在oracle中函数NVL是什么意思?

    千次阅读 2012-05-15 00:03:13
    Nvl(FieldName,0)意思是如果FieldName为Null,那么返回0,否则返回FieldName的
  • Swift中带参数的函数的一般写法是这样的:func someFunction... // 在函数体内,firstParameterName 和 secondParameterName 代表参数中的第一个和第二个参数 } 调用该函数时,写法是:someFunction(firstParam...
  • 什么函数? 类中独立的小程序。实现特定的功能的小程序。可被程序直接调用,实现相应的功能。英文称 function 例题:4.1 函数应用举例 #include using namespace std; int main(){ void printStar(); void ...
  • 什么是闭包函数

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

    万次阅读 2015-09-13 14:34:38
    def func(): x = 1 y = 2 return x, y a, b = func() ...函数可以返回吗?答案是肯定的。 比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标: # m
  • 哈希函数什么,在区块链中有什么用 哈希函数什么? 哈希函数,又叫散列函数、散列算法,是一种从任何一种数据中创建小的数字“指纹”(也叫做摘要)的方法。什么意思呢?就是说,你输入任何长度、任何内容的...
  • 在用C语言编写网络时经常会有这些看不懂的,结构,函数。这应该看什么书补充这方面的知识呢?
  • lambda 函数是一个可以接收任意个参数(包括可选参数)并且返回单个表达式的匿名函数。 (注意:lambda 函数不能包含命令,它们所包含的表达式也不能超过一个)(二)使用lambda函数的好处:1、lambda函数比较.....
  • python列表平均值函数Mathematics and programming go hand in hand. If you are a programmer, at some point you will have to use mathematics. 数学和程序设计齐头并进。 如果您是程序员,则有时必须使用数学。 ...
  • C++函数参数的缺省

    千次阅读 2019-01-05 22:10:57
    C++函数参数的缺省 有一些参数的在每次函数调用时都相同,书写这样的语句会使人厌烦。C++语言采用参数的缺省使书写变得简洁(在编译时,缺省由编译器自动插入)。  参数缺省的使用规则: 【规则8-3-1...
  • 什么是目标函数?定义是:指所关心的目标与相关的因素的函数关系。举个例子,假如我们想要预测公司楼下手抓饼店明天能卖多少张手抓饼,已知过去10天每天卖多少,以及每天的天气情况,是否有节假日,和手抓饼店老板和...
  • SUMX2MY2函数,你知道什么意思吗?

    千次阅读 2020-11-19 08:49:33
    Excel的SUMX2MY2函数的主要作用是计算数组对应的平方差之和。 上一篇文章介绍了SUMX2PY2函数使用方法,今天介绍Microsoft Excel中SUMX2MY2函数的公式语法和用法。 SUMX2MY2函数功能 SUMX2MY2 函数用于计算两个数组...
  • 什么是聚集函数

    千次阅读 2018-04-16 22:20:38
    一个聚集函数个输入行中计算出一个结果。 比如,我们有在一个行集合上计算 count(数目), sum(和),avg(均值), max(最大)和min(最小值)的函数。...
  • 什么是可验证随机函数VRF

    千次阅读 2018-05-17 09:58:17
    因为可验证随机函VRF对设计区块链共识...先理解一下这里说的“随机”是什么意思:一个理想的哈希函数,其值域应该是离散的、均匀分布的,给定不同的输入,其输出应该没有规律,随机的洒落、分布在值域区间内。 ...
  • excel的IRR函数中的预估什么

    千次阅读 2019-07-19 19:00:14
    IRR函数是拿来预算现金流的收益的,一般可以用在基金定投或者保险理财的回报计算,下图中,图一是每年投入3510元,连续投入20年,第三十年拿到181440的回报,那么回报率是0.047954接近于0.05,当我们默认的时候,预估...
  • JavaScript----什么是纯函数

    万次阅读 多人点赞 2018-01-23 13:51:15
    简单来说,一个函数的返回结果只依赖于它的参数,并且在执行过程里面没有副作用,我们就把这个函数叫做纯函数。这么说肯定比较抽象,我们把它掰开来看: 函数的返回结果只依赖于它的参数。 函数执行过程里面没有副...
  • 什么是回调函数

    万次阅读 2018-08-03 17:33:36
    回调函数是指 使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数函数是你实现的,但由别人(或系统...
  • C函数实现返回的方法

    千次阅读 2012-08-07 21:39:34
    C语言中,一个函数最多只能实现一个返回值。 int func (int b) { int a=5; if (a>b) ...通过在函数中使用返回语句,返回一个函数,同时终止函数的调用,返回主函数。 而在实际操作

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 542,231
精华内容 216,892
关键字:

多值函数是什么意思