递归学习总结及使用递归实现n!(另附上n!数组实现)

Posted everrrr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归学习总结及使用递归实现n!(另附上n!数组实现)相关的知识,希望对你有一定的参考价值。

 一,递归的概念及其作用
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。

 


实现n!与斐波那契额数列有很多种方法,在此为了介绍递归方法,所以以此为例,使用递归实现二进制转换。下面给出递归转换二进制的代码(给出详细注释)此处不再做详细解释。

二,递归实现n!

#include<stdio.h>
 
//递归函数实现
int Fact(int n)

    if(n==0)
       //当n==0时返回1.即0!=1
        return 1;  
    
    else
    
        return n*Fact(n-1);//递归公式
    

 
int main()  //主函数

    int n,sum;
    scanf("%d",&n);    //输入
    
    sum=Fact(n);
    
    printf("%d",sum);  //输出
    return 0;

三,n!数组实现代码(不再过多解释)

#include<stdio.h>
 
int main()

    int n;
    scanf("%d",&n);
    int t=n,fact=1; //当n==0时fact=1
    while(n>1)
    
        fact*=n--;
    
    
    printf("%d\n",fact);
    return 0;

 

以上是关于递归学习总结及使用递归实现n!(另附上n!数组实现)的主要内容,如果未能解决你的问题,请参考以下文章

算法学习——递归之快速排序

怎么用递归实现1-10的求和 golang

递归和非递归分别实现求n的阶乘

数据结构算法--栈与队列

如何创建一个实现递归二进制搜索的循环来搜索数组中的n个数字? JAVA

算法初步--递归思想(java实现)