用循环和递归分别计算阶乘

转载 2012年03月21日 20:27:44
// factor.c -- uses loops and recursion to calculate factorials
#include <stdio.h>
long fact(int n);
long rfact(int n);
int main(void)
{
    int num;

    printf("This program calculates factorials.\n");
    printf("Enter a value in the range 0-12 (q to quit):\n");
    while (scanf("%d", &num) == 1)
    {
        if (num < 0)
            printf("No negative numbers, please.\n");
        else if (num > 12)
            printf("Keep input under 13.\n");
        else
        {
            printf("loop: %d factorial = %ld\n", 
                    num, fact(num));
            printf("recursion: %d factorial = %ld\n", 
                    num, rfact(num));
        }
        printf("Enter a value in the range 0-12 (q to quit):\n");
    }
    printf("Bye.\n");
  
    return 0;
}

long fact(int n)     // loop-based function
{
    long ans;

    for (ans = 1; n > 1; n--)
        ans *= n;
    
    return ans;
}

long rfact(int n)    // recursive version
{
    long ans;

    if (n > 0)
        ans= n * rfact(n-1);
    else
        ans = 1;
  
    return ans;
}

C/C++程序——递归和循环实现阶乘,并比较N!与(2N N)的大小

递归和循环实现阶乘,并比较N!与(2N N)的大小

计算0~10的阶乘 使用递归

点击(此处)折叠或打开 #include stdio.h> long factorial(long); ...

为什么用 递归 计算“阶乘”和“斐波那契数列”是不合适的?

Technorati 标签: 递归,阶乘,斐波那契数列,fibonacci         《C和指针》的作者Kenneth A. Reek说,他认为这是很不幸的:“计算阶乘时不能提供任何优越之...

为什么用 递归 计算“阶乘”和“斐波那契数列”是不合适的?

        我们看到的参考书中,当讲到递归时基本上都是使用“阶乘”和“斐波那契数列”来举例子,确实可以帮助我们了解递归,但却导致我们在平时编写类似程序时,总是使用递归来实现。那么在实际项目中,使用...

C语言递归方法求阶乘

  • 2014年03月31日 14:03
  • 372B
  • 下载

Java递归-实现阶乘;斐波拉契数列;删除文件夹的文件

所谓递归(Recursion),就是方法调用自身,对于递归来说,一定要有一个出口,让递归结束,只要这样,才能保证不出现死循环。 ————————实例1: /* * 使用递归实现阶乘 */ ...

求阶乘,用递归

  • 2012年11月06日 14:21
  • 213B
  • 下载

阶乘递归方法(c语言)

  • 2010年01月21日 20:55
  • 422B
  • 下载

尾递归、CPS等几种求阶乘的算法

好久没写手快生了。好久没来也已是物是人非了。发个阶乘的尾递归、CPS等几种写法吧。 #include "stdafx.h" // 阶乘 #include #include using ...
  • hikaliv
  • hikaliv
  • 2013年10月20日 15:10
  • 2914
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用循环和递归分别计算阶乘
举报原因:
原因补充:

(最多只允许输入30个字)