本文目录
C语言,函数递归的调用
#include "stdio.h"void fun1(int n,int m){if(m》0)fun1(n,m-1);printf("%-2d+%2d = %-2d ",n,m,n+m);}void fun2(int n,int m){if(n》0)fun2(n-1,m);fun1(n,m-n);printf("\n");}int main(int argv,char *argc){int N;printf("Input N(int 0《=N《=99)...\nN=");if(scanf("%d",&N)!=1 || N《0 || N》99){printf("Input error, exit...\n");return 0;}fun2(N,N);return 0; }
运行样例:
c语言 函数递归调用
这个很好理解啊,你看看你输入的参数什么就可以了。你函数的声明是void fuck ( int n ,char o, char t, char th)第一次调用你是fuck ( n, ’A’,’B’,’C’);这时,o=A,t=B,th=C,所以输入printf ("%c %c %c\n",t,o,th);就是BAC,然后你fuck(n-1,t,o,th);,这时o=原来的t=B,t=原来的o=A,th=C,输出printf ("%c %c %c\n",t,o,th);就是ABC了如此类推
c语言关于函数的递归调用问题
一般来说是自己调用自己,一般有两个分支,一个分支是调用自己,还有一个分支是结束条件如求n! int f(int n) { if(n==1) //这个是结束条件 return 1; else //这个是调用自己的分支 return n*f(n-1); } 还有一个比较复杂一点,是双向调用,也就是a函数调用b函数,b函数在调用a函数这样循环调用,其实基于这个道理,还有多个函数互相调用,不过这样的情况很少见但万变不离其宗,每个函数都有两个分支,一个是结束条件,一个是调用函数
C语言函数的递归调用
先调用函数f,然后把返回值赋值给z。不过这个函数不对,没有退出条件,无法停止。举例说明吧int f(int x){ if(x==0) { return 1; } else { return x*f(x-1); }}假如f(3)那么第一次f(3):x!=0,调用f(2)第二次f(2):x!=0,调用f(1)第三次f(1):x!=0,调用f(0)第四次f(1):x==0,返回1返回第三次调用f(1):返回1*1=1;返回第二次调用f(2):返回2*1=2;返回第一次调用f(3):返回3*2=6;f(3)的结果为6