精华内容
下载资源
问答
  • 递归就是一个方法自己调用自己。在编程语言中,如果一个程序允许您在同一个函数中调用一个函数,那么它就被称为函数的递归调用。void recursion() {recursion();...递归函数对于解决许多数学问题非...

    递归就是一个方法自己调用自己。在编程语言中,如果一个程序允许您在同一个函数中调用一个函数,那么它就被称为函数的递归调用。

    a659bbf735d3e140c0e47515cc5996a5.pngvoid recursion() {

    recursion(); /* 函数调用本身 */

    }

    int main() {

    recursion();

    }

    C语言支持递归,即一个调用自身的函数。但是在使用递归时,程序员需要小心定义函数的退出条件,否则它将进入无限循环。

    递归函数对于解决许多数学问题非常有用,例如计算一个数的阶乘、生成斐波那契级数等。

    数的阶乘

    下面的例子使用递归计算一个给定的数的阶乘函数#include

    unsigned long long int factorial(unsigned int i) {

    if(i <= 1) {

    return 1;

    }

    return i * factorial(i - 1);

    }

    int main() {

    int i = 12;

    printf("Factorial of %d is %d\n", i, factorial(i));

    return 0;

    }

    输出:Factorial of 12 is 479001600

    斐波那契系列

    以下示例使用递归函数为给定数字生成斐波那契(Fibonacci)系列#include int fibonacci(int i) {

    if(i == 0) {

    return 0;

    }

    if(i == 1) {

    return 1;

    }

    return fibonacci(i-1) + fibonacci(i-2);}int main() {

    int i;

    for (i = 0; i < 10; i++) {

    printf("%d\t\n", fibonacci(i));

    }

    return 0;}

    输出:0

    1

    1

    2

    3

    5

    8

    13

    21

    34

    相关C语言视频教程推荐:《C教程》

    本篇文章就是关于c语言递归算法的介绍,希望对需要的朋友有所帮助!

    展开全文
  • c语言递归函数的使用方法发布时间:2020-06-11 09:39:53来源:亿速云阅读:157作者:Leah这篇文章给大家分享的是c语言递归函数的使用方法。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。递归...

    c语言递归函数的使用方法

    发布时间:2020-06-11 09:39:53

    来源:亿速云

    阅读:157

    作者:Leah

    这篇文章给大家分享的是c语言递归函数的使用方法。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

    递归就是一个过程或 函数 在其定义或说明中有直接或间接调用自身的一种方法;递归函数就是直接或间接调用自身的函数,也就是自身调用自己的过程。

    1.Fibonacci数

    我们直到Fibonacci数的递推公式为:F(0)=F(1)=1,F(n)=F(n-1)+F(n-2) n>=2;

    这个明显地给出了递归边界n=0或1的时候F(n)的值,和递归逻辑F(n)=F(n-1)+F(n-2),即递推公式.所以这个递归函数不难书写#includeusing namespace std;

    int F(int n)//函数返回一个数对应的Fibonacci数{ if(n0 || n1)//递归边界

    return 1; return F(n-1) + F(n-2);//递归公式}

    int main(){ //测试

    int n; while(cin >> n) cout << F(n) << endl;

    return 0;

    }

    2.阶乘的递归公式:n*F(n-1)

    代码如下:#includeusing namespace std;

    int F(int n){ if(n==0)//递归边界

    return 1;

    return n*F(n-1);//递归公式}

    int main(){ int n; cin >> n; cout << F(n) << endl;

    return 0;

    }

    3.数组求和

    给一个数组a[]:a[0],a[1],…,a[n-1]如何用递归的方式求和?

    仍然是两个问题:递归边界和递归公式.

    递归边界是什么?一时不容易想到,但是我们想到了求和,多个数的求和过程是什么,x,y,z,w手动求和的过程是什么?步骤如下:

    x+y=a,任务变为a,z,w求和

    a+z=b,任务变为b,w求和

    b+w=c得出答案

    思考一下,【得出答案】这一步为什么就可以得出答案呢?(废话?)是因为,一个数不用相加就能得出答案.

    所以,递归的边界就是只有一个数.

    所以,递归边界有了,那么递归公式呢?其实手动计算过程中,隐含了递归公式:

    其中+为求两个数的和,F为求多个数的和的递归函数.代码如下:#includeusing namespace std;

    int F(int a[],int start,int end){ if(start==end)//递归边界

    return a[start];

    return a[start] + F(a,start+1,end);//递归公式}

    int main(){ int a[] = {1,2,3,4,5}; int s=0,e=4; cout << F(a,s,e) << endl;

    return 0;

    }

    4.求数组元素最大值

    手动求最大值的过程是什么,遍历+比较,过程如下:

    例如,求3,2,6,7,2,4的最大值:先设置最大值max=-999999,然后将max和数组元素逐个(遍历)比较如果a[i]>max,则更新max的值为a[i],否则max不变,继续向后遍历,直到遍历结束.

    max<3,则max=3

    max>2,max=3不变

    max<6,则max=6

    max<7,则max=7

    max>2,max=7不变

    max>4,max=7不变

    遍历结束,max=7为最大值.

    和求和类似,递归的公式如下:

    其中max为求两个数的较大值函数,F为求多个数的最大值的递归函数.代码如下:#includeusing namespace std;

    #define max(a,b) (a>b?a:b)

    int F(int a[],int s,int e){ if(s==e) return a[s]; else if(s+1 == e)//递归边界

    return max(a[s],a[e]);

    return max(a[s],F(a,s+1,e));//递归公式!!!}

    int main(){ int a[] = {5,1,4,6,2}; int s = 0,e = 4; cout << F(a,s,e) << endl;

    return 0;

    }

    以上就是c语言递归函数的使用方法介绍,详细使用情况还得要大家自己使用过才能知道具体要领。如果想阅读更多相关内容的文章,欢迎关注亿速云行业资讯频道!

    展开全文
  • c语言递归函数求和,数列

    千次阅读 2019-10-22 09:43:27
    //递归函数,正整数列 int f1(int n) //n 取n的值 { if( n == 1) { return 1; } return f1(n - 1) + 1; //1 2 3 4 5 6 7 8 9 } //递归函数,奇数数列 int f2(int n) //n 取n的值 { if( n == 1) { ...
    #include<stdio.h> 
    int main(void)
    {
    
    	printf("取正整数列1、2、3、4、5、6、		n=6的值=%d\n\n",f1(6));
    	printf("取奇数数列1、3、5、7、9、11、		n=6的值=%d\n\n",f2(6));
    	printf("取偶数数列2、4、6、8、10、12、		n=6的值=%d\n\n",f3(6));
    	printf("求正整数列的和1、2、3、4、5、6、	   的值=%d\n\n",s1(6));
    	printf("求奇数数列的和1、3、5、7、9、11、	   的值=%d\n\n",s2(6));
    	printf("求偶数数列的和2、4、6、8、10、12、	   的值=%d\n\n",s3(6));
    	return 0;
    }
    
    
    //递归函数,正整数列 
    int f1(int n)	//n  取n的值 
    {
    	if( n == 1)
    	{
    		return 1;	
    	}
    	return f1(n - 1) + 1;	//1 2 3 4 5 6 7 8 9
    }
    
    
    //递归函数,奇数数列 
    int f2(int n)	//n  取n的值 
    {
    	if( n == 1)
    	{
    		return 1;	
    	}
    	return f2(n - 1) + 2;	//1 3 5 7 9 11 13 15 17
    }
    
    
    //递归函数,偶数数列 
    int f3(int n)	//n  取n的值 
    {
    	if( n == 1)
    	{
    		return 2;	
    	}
    	return f3(n - 1) + 2;	//2 4 6 8 10 12 14 16 18 20
    }
    
    
    
    //递归函数,求正整数列的和 
    int s1(int n)	//n  取n的值 
    {
    	if( n == 1)
    	{
    		return 1;	
    	}
    	return s1(n - 1) + n;	//1 2 3 4 5 6 7 8 9
    }
    
    
    //递归函数,奇数数列的和 
    int s2(int n)	//n  取n的值 
    {
    	if( n == 1)
    	{
    		return 1;	
    	}
    	return s2(n - 1)+ n + 3;	//1 3 5 7 9 11 13 15 17
    }
    
    
    //递归函数,偶数数列的和
    int s3(int n)	//n  取n的值 
    {
    	if( n == 1)
    	{
    		return 2;	
    	}
    	return s3(n - 1) + n + 3;	//2 4 6 8 10 12 14 16 18 20
    }
    
    
    /*
    取正整数列1、2、3、4、5、6、            n=6的值=6
    
    取奇数数列1、3、5、7、9、11、           n=6的值=11
    
    取偶数数列2、4、6、8、10、12、          n=6的值=12
    
    求正整数列的和1、2、3、4、5、6、           的值=21
    
    求奇数数列的和1、3、5、7、9、11、          的值=36
    
    求偶数数列的和2、4、6、8、10、12、         的值=37
    
    
    --------------------------------
    Process exited after 0.02777 seconds with return value 0
    请按任意键继续. . .
    */
    

     

    展开全文
  • C语言递归求和(答案原创)

    千次阅读 2019-03-20 21:29:48
    递归函数原型:int Sum(int n); 程序运行结果示例1: Please input n:5↙ sum=15 程序运行结果示例2: Please input n:0↙ data error! 程序运行结果示例3: Please input n:-3↙ data error! 输入提示信息:...

    题目内容:

    用递归方法计算如下求和计算

    sum = 1 + 2 + 3 + … + n

    递归函数原型:int Sum(int n);

    程序运行结果示例1:

    Please input n:5↙

    sum=15

    程序运行结果示例2:

    Please input n:0↙

    data error!

    程序运行结果示例3:

    Please input n:-3↙

    data error!

    输入提示信息:“Please input n:”

    输入错误提示信息:“data error!\n”

    输入格式:"%d"

    输出格式:“sum=%d\n”

    #include <stdio.h>
    #include <stdlib.h>
    int Sum(int n);
    
    int Sum(int n)
    {
    	if (n==1)
    		return 1;
    	else
    		return n+Sum(n-1);
    }
    int main()
    {	int n;
    	printf("Please input n:");
        scanf("%d",&n);
        if (n>=1)
    		printf("sum=%d\n",Sum(n));
        else
    		printf("data error!\n");
    	system("pause");
    	return 0;
    }
    
    
    展开全文
  • C语言递归函数

    2018-11-25 13:22:33
    编写递归函数 递归函数double p(int n,int x)计算下列多项式。多项式的递归定义如下: 输入每行输入2个整数n,x。当n&lt;0时结束输入。输出对应输入,每行输出一个计算结果。样例输入 0,3 1,3 2,30 -1,30 样例...
  • C语言递归函数讲解

    2017-07-03 16:31:00
    递归函数是什么? 是函数、、、、、、、、、、、、、、、、、、、、 你可以把它理解成是for循环与死循环的结合的函数。简单的说:递归函数是有条件终止的死循环函数;  死循环函数这里是指在函数体中调用自身; ...
  • C语言递归函数求阶乘与前n项和

    千次阅读 2019-04-30 21:19:42
    C语言递归函数 1.求阶乘: #include<stdio.h> int recursion(int num) { if(num==1) return 1; else { num=num*recursion(num-1); return num; } ...
  • 关于C语言递归函数的心得及一些例题 递归,是一种函数调用,简单来说,函数内容无非就是两部分,第一部分是出口,另一部分则是循环调用的语句。下面,可以通过具体的函数来理解什么是递归。 1.阶乘: double fact...
  • c语言递归求和

    千次阅读 2020-03-04 19:19:00
    递归的方法求和 求和1+2+3+…+n Sum(n):1+2+3+…+n; Sum(n-1):1+2+3+…+(n-1); Sum(n) = Sum(n-1)+n #include<stdio.h> int Sum(int n) { if(n == 0 || n ==1 ) return 0; else return Sum(n-1)+n; } int ...
  • C语言递归实现数组求和

    千次阅读 2019-11-14 23:25:57
    C语言递归实现数组求和 一.基本思想(分而治之): 1.基线条件: 显然最简单的情况:数组只有一个数时,无需任何操作,直接返回其值即可; 所以基线条件为数组长度为1; 2.递归条件: 每一次加上数组最后一位并缩短...
  • 求和C语言编写,要求使用函数嵌套调用关注:63答案:5mip版解决时间 2021-01-23 17:15提问者空城忆2021-01-23 11:21急!!!!!在线等最佳答案二级知识专家萌逗2021-01-23 11:32#includeusing namespace std;int ...
  • C语言递归求1累加到100求和要实现的功能如下完整源代码实现如下 要实现的功能如下 1+2+3+…+100,用递归实现 完整源代码实现如下 #include <stdio.h> int x = 0; int function(int num); int main() { int ...
  • 要点递归式T(n)求解代换法*迭代法*递归树主定理 Master (core)分治策略Insert Sort 插入排序 VS Merge Sort 归并排序最大子数组矩阵Strassen乘法(*)多数问题 Majority Problem复习输入规模: 假设输入了一个大小为n的...
  • 什么是递归,递归的优缺点... 先决条件: C语言递归 递归函数 (Recursive function ) A function which calls itself is a recursive function. There is basically a statement somewhere inside the f...
  • 摘要记得大学接触的第一门课程就是C语言,里面让我印象深刻之一就是递归,受大学老师讲...递归函数****2.递归出口**下面的练习会让你清晰的发现,递归其实就是要找 递归函数和递归出口 这两步练习假设有个数列 1 ...
  • C语言 使用递归函数计算1到n之和

    千次阅读 2019-12-29 20:29:45
    题目描述 本题要求实现一个用递归计算1+2+3+…+n的和的简单函数。 函数接口定义: ...建议尝试写成递归函数。 裁判测试程序样例: #include<stdio.h> int sum( int n ); int main() { int n; ...
  • 递归函数】用递归函数求斐波那契数列第N项值(一)题目描述输入输出样例输入样例输出分析代码实现 题目描述 已知斐波那契数列为1,1,2,3,5,8,13,7……,第一、第二项值为1,1,从第3项起,每项的值都等于前2...
  • 递归函数】用递归函数求斐波那契数列前N项和(二)题目描述输入输出样例输入样例输出分析代码实现 题目描述 斐波那契数列定义:an=an-1+an-2,即第n项值等于前两项之和。 已知斐波那契数列第一、第二项值为1,1,...
  • 递归函数简单的理解就是在不停地调用自己,如果不懂请参照...intF//递归函数c语言函数递归C语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。C语言...
  • C语言函数递归调用

    千次阅读 2020-04-01 21:50:26
    函数递归调用的定义:函数直接或间接的调用自身叫函数递归调用。 二、 采用递归方法来解决问题时,必须符合以下两个条件: (1)、可以把要解决的问题转化为一个规模较小的新问题,而这个新问题的解决方法仍与...
  • 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和, 例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19 思想: 将问题化小,1.自己调用自己;2.终止条件 一个数组成它的数字之和,无非...
  • C语言递归实验

    千次阅读 2017-01-10 14:43:52
    突然想到用递归的思想写下小程序,当初刚学C的时候没理解到,现在作个记录:#include #include #include <time.h>/****************************************************************** * @brief: 输出程序的运行...
  • 基于c语言实现的递归函数求阶乘算法示例数据:5120Process returned 0 (0x0) execution time : 1.464 sPress any key to continue.1 /*基于C语言实现的递归函数求阶乘2 */3 #include4 int fun(int a)//Define a ...
  • 由于缺少Latex编辑器,下面是一个分段函数的图片,我希望使用Sympy绘制它。我想传入两个系数数组和一个x值,然后计算它并绘制函数。(编辑:比字母表多了一个p,图片更新了)这是我目前为止的尝试(alpha和p是列表/数组...
  • 递归函数就是直接或间接调用自身的函数,也就是自身调用自己; 刚接触递归的同学,可能难以理解递归,难以理解的点可能很多,例如: 1.函数为什么可以在自己的内部又调用自己呢? 2.既然可以自己调用自己,那么递归...
  • 关于C语言中的递归函数

    万次阅读 多人点赞 2019-03-14 11:09:34
    递归实例: #include &lt;stdio.h&gt; void up_and_down(int); int main(void) { up_and_down(1); return 0; } void up_and_down(int n) { printf("Level %d: n location %p\n", n, &...
  • c语言 递归求Fabonacci数列

    千次阅读 2020-03-17 17:11:52
    本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下: f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。...建议用递归实现。 裁判测试程序样例: #include <stdio.h> int f( int ...
  • ** 文章地址 ** 下面给大家编写几个程序,列举几个例子,主要通过例子让大家对递归有一个了解。 1) 用递归求 n 的阶乘。 ... //函数声明 int main(void) { int n; printf("请输入n的值:"); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,932
精华内容 1,172
关键字:

c语言递归函数求和

c语言 订阅