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)//x>12时会使结果溢出
            break;
        printf("Error,redo: ");
    }
    printf("%d! = %d\n",x,fact(x));
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-29
=#include <stdio.h>

/// 求阶乘函数
/// 递归思想
/// n! = n * (n-1) * (n-2) * ... * 1
/// n! = n * [(n-1) * (n-2) * ... * 1]
/// n! = n * (n-1)! 递归方程
/// 这是递归实现

unsigned Factorial(unsigned int n)
{
if (n == 0) return 1; // 对于0的阶乘,当n=0时,递归返回
return n * Factorial(n-1); // 递归调用
}

void main()
{
int n = 3;
printf("3! = %d",Factorial(n));
}本回答被网友采纳
第2个回答  2012-06-25
# include <stdio.h>
void f(int n)
{
printf("调用函数f(%d)\n",n);
if (n==1)
printf("当n==%d时结束调用!\n",n);
else
f(n-1);
}
int main(void)
{
f(5);
return 0;
}
/*
----
调用函数f(5)
调用函数f(4)
调用函数f(3)
调用函数f(2)
调用函数f(1)
当n==1时结束调用!
-----
*/本回答被网友采纳
第3个回答  2012-06-25
int multi(int a)
{
if(a==1)
return 1;
else
return a*multi(a-1);
}
void main()
{
printf("6!=%d\n", multi(6));
}
n的阶乘运算,递归实现。追问

能不能完整一些, 我是C语言菜鸟 多谢!

追答

这就是个完整的程序,随便找个C编译器编译运行就有结果~

相似回答