C primer plus 第八章 例题练习(递归)

来源:互联网 发布:淘宝卖家不发货接口 编辑:程序博客网 时间:2024/05/09 12:37
/*********************************************************************            利用循环及递归计算n的阶乘。            现有疑问:            1、递归的界限以及跳出循环条件。            2、递归中如何控制递归降序。*********************************************************************/#include <stdio.h>long fact(int n);long rfact(int n);int main(void){    int n;    printf("Enter a value in the range 0-15 (q to quit):\n");    while((scanf_s("%d", &n)) == 1)    {        if(n<0)            printf("No negative numbers,please.\n");        else if(n>15)            printf("Please keep input under 15.\n");        else{            printf("recursion: %d factorial = %ld.\n", n, fact(n));            printf("loop: %d factorial = %ld.\n", n, rfact(n));        }            printf("Enter a value in the range 0-15 (q to quit):\n");    }    return 0;}long fact(int n){    return ((n == 1)? 1:(n * fact(n-1)));}long rfact(int n){    int ans;    for(ans=1;n>0;n--)        ans *= n;    return ans;}
0 0