美文网首页
9.1 函数:尾递归计算阶乘(factorial)

9.1 函数:尾递归计算阶乘(factorial)

作者: 日常表白结衣 | 来源:发表于2017-07-11 11:23 被阅读0次

最简单的递归形式就是把递归调用置于函数的末尾,即正好在return语句之前,这种形式的递归被称为尾递归 (tail recursion),其形式相当于循环。

/* 递归计算阶乘 */
#include<stdio.h>
long fact(int n);
long rfact(int n);
int main()
{
    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) //输入验证,scanf()函数不读换行符
    {
        if (num < 0)
            printf("no negative numbers, please.\n");
        else if (num > 12)
            printf("keep intput 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)   //循环函数
{
    long ans;
    for (ans = 1; n > 1; n--)
        ans *= n;
    return ans;
}
long rfact(int n)   //递归调用
{
    long ans;
    if (n > 0)
        ans = n*rfact(n - 1);
    else
        ans = 1;
    return ans;
}

相关文章

  • 9.1 函数:尾递归计算阶乘(factorial)

    最简单的递归形式就是把递归调用置于函数的末尾,即正好在return语句之前,这种形式的递归被称为尾递归 (tail...

  • LeetCode #1006 Clumsy Factorial

    1006 Clumsy Factorial 笨阶乘 Description:The factorial of a ...

  • Python 39 递归函数

    递归函数是特殊的函数定义方法 在函数内部继续调用自己 #计算阶乘(5!) factorial =1 for iin...

  • Factorial

    使用循环计算阶乘 使用递归计算阶乘

  • JS SICP训练营

    一、过程与它们产生的运算 1.阶乘 在factorial函数中填入代码,实现n的的阶乘。 所谓n的阶乘就是,1 X...

  • Factorial Trailing Zeroes阶乘尾零

    Easy 给定整数n, 返回n!的尾零的数目。复杂度控制在O(logN)。 n!的尾零主要有5*2造成,因子为2的...

  • [译]Scala嵌套函数

    在Scala中是可以定义嵌套函数的。下面定义了函数factorial,用于计算给定数字的阶乘: 程序输出结果是:

  • python operator模块

    在函数式编程中,经常需要把算术运算符当作函数使用。例如,不使用递归计算阶乘。求和可以使用 sum 函数,但是求积则...

  • Y combinator 推导过程

    首先需要一个递归的函数 以阶乘为例函数名为factorial,参数为n。如果n = 0返回1,否则返回factor...

  • JS 递归

    函数递归Factorial称之为阶乘,维基百科是这样描述的“一个正整数的阶乘是所有小于及等于该数的正整数的积,并且...

网友评论

      本文标题:9.1 函数:尾递归计算阶乘(factorial)

      本文链接:https://www.haomeiwen.com/subject/nvgphxtx.html