回 帖 发 新 帖 刷新版面

主题:求一个递归算法!!

计算某一个整数的阶乘,用户需要在程序计算完结果后在进行另外一次计算然后再进行一次再重复计算直到退出。
要求在计算整数阶乘的递归函数体中实现进行下一次计算的输入(而不是在main函数中实现)。

回复列表 (共10个回复)

沙发

不明白你说什么,说清楚些

板凳

// 不知道这样是否满足楼主的要求?(好奇怪的要求啊!)
int n;
int factorial()
{
   assert(n >= 0);

   if(n==0)
   {
      scanf("%d", &n);
      return 1;
   }
   else
   {
      int  k = n--;
      return k*factorial();
   }
}

int main()
{
   scanf("%d", &n);

   while(n >= 0)
   {
      printf("%d\n", factorial());
   }

   return 0;
}

3 楼

谢谢二楼的答复。不过我不是要你这种算法。
你的不是在main中用while实现循环输入吗。
我希望是在递归中实现循环输入。
这是我同学问的一个问题,我也感到很无奈(简直让我抓狂),想了好久都想不出来。就来论坛上问问。

4 楼

我的明明不是在main函数中输入的呀(当然第一次除外,因为总得有个输入值啊),main函数的while循环只是输出。

5 楼


#include <stdio.h>

int fun(int n){
    if(n){
        return n*fun(n-1);
    }
    else return 1;
}

int main(void)
{
    int n;
    scanf("%d", &n);
    printf("%d\n",fun(n));
    return 0;
}

6 楼

恩!2楼的。我看明白了~!
不过这个你调试了吗??
谢谢你~!

7 楼

调试过呀,有问题吗?

8 楼

#include<stdio.h>
int tag=0;
int main(int n)
{
    if(tag==0){tag=1;n=0;}//run by first time
    if(n==0)//goin' to input
    {
        scanf("%d",&n);
        if(n==0)
            return 0;
        printf("%d!=%d\n",n,main(n));
        main(0);
    }
    else
        if(n==1)
            return 1;
        else
            return n*main(n-1);
    return 0;
}

感觉像是在玩游戏...我这个VC调试过

9 楼

特别的要求特别地写

10 楼

恩 谢谢了~!

我来回复

您尚未登录,请登录后再回复。点此登录或注册