×

递归函数例子

递归函数例子(递归函数表达式)

admin admin 发表于2023-04-07 17:01:09 浏览76 评论0

抢沙发发表评论

本文目录一览:

什么是递归函数?举例

递归式解决逻辑问题的。基本思想是::把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。

c有一个汉诺塔,就是非用递归才能解决的一个问题。

利用递归算法解题,首先要对问题的以下三个方面进行分析:

一、决定问题规模的参数。需要用递归算法解决的问题,其规模通常都是比较大的,在问题中决定规模大小(或问题复杂程度)的量有哪些?把它们找出来。

二、问题的边界条件及边界值。在什么情况下可以直接得出问题的解?这就是问题的边界条件及边界值。

三、解决问题的通式。把规模大的、较难解决的问题变成规模较小、易解决的同一问题,需要通过哪些步骤或等式来实现?这是解决递归问题的难点。

递归函数的例子

这个行吗:

求1+2+……+100的和

先分析一下。第一递归变量的问题,从题目上看应该取1,2,……,100这些变量的值作为递归的条件;第二就是如何终止的问题,从题目上看应该是当数为100的时候就不能往下加了。那么我们试着写一下程序。-递归函数例子

int add(int);

main()

{

int num=1,sn;

sn=add(num);

printf("%d\n",sn);

getch();

}

int add(int num)

{

static int sn;

sn+=num;

if(num==100) return sn;

add(++num);

}

分析一下程序:前调用add(1),然后在子函数中把这个1加到sn上面。接着调用add(2),再把sn加2上来。这样一直到100,到了100的时候,先加上来,然后发现满足了if条件,这时返回sn的值,也就是1+2+……+100的值了。-递归函数例子

能详细点说明下递归吗,最好有现实例子说明

递归,简单的说就是自己调用自己,执行递归函数降反复调用其自身,每调用一次就进入新的一层。例如,有函数f如下。

int f(int x)

{

int y;

z=f(y);

return z;

}

这个函数是一个递归函数,但是运行该函数将无休止的调用自身,这当然是不正确的,在此只是给你举个简单的例子而已。为了防止调用无休止的进行,必须加条件判断,满足某种条件后就不再做递归调用,然后逐层返回。在此举例说明递归调用的执行过程。 -递归函数例子

用递归法计算n!.

long f(int i)

{

if(n0) printf("input error");return;

else if(i==0||i==1) return 1;

else return i*f(i-1);

}

main()

{

int n;

printf("please input n:\n");

scanf("%d",n);

printf("%d=%id\n",n,f(n));

}

程序中的f是一个递归函数,如果n0,n==0或者n==1时将结束函数的执行,否则就递归调用f函数自身。

假设输入3,即求3!。进入f函数i=3,不等于0或1,所以执行i*f(i-1),即

3*f(2)。然后再递归调用f(2),2不等于0或1,所以执行i*f(i-1),即2*f(1).继续调用f(1),此时1==1,结束函数的执行。

所以返回的结果是3*f(2)=3*2*f(1)=3*2*1=6.

希望你可以看懂,我感觉蛮简单的。

c语言 函数递归调用的简单例子

举一个用递归调用函数求输入非负整数的阶乘的例子,如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

int fact(int n){

    if(n==1 || n==0) return 1;

    else return n*fact(n-1);

}

int main(void){

    int x;

    while(1){

        printf("Input x(int 12=x=0)...\nx=");

        if(scanf("%d",x),x=0  x=12)//x12时会使结果溢出

            break;

        printf("Error,redo: ");

    }

    printf("%d! = %d\n",x,fact(x));

    return 0;

}