递归学习总结及使用递归实现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;
}

猜你喜欢

转载自www.cnblogs.com/everrrr/p/10990365.html