C++阶乘和数,这程序错在哪里了???

琴声悠扬TODO 发布于 2014/03/15 16:15
阅读 368
收藏 0
#include<iostream>

using namespace std;

void total_factorial(int n);    //求阶乘和数 

int factorial(int n);       //求一个数的阶乘 

int main()
{
       int m;
       cin>>m;
       total_factoreal(m);
}
void total_factorial(int n)    //求阶乘和数
{
    int i,j,k;
    for(i=2;i<=n;i++)
    {
        int sum=0;
        j=i;
        while(j)
        {
            sum+=total_factorial(j%10);
            j/=10;
        }
        if(sum==i)
            cout<<sum<<"  ";
    }
    cout<<endl<<endl;
}
int factorial(int n)       //求一个数的阶乘
{
    int sum=1;
    if(n==1)
        return sum;
    else
       return sum=factorial(n-1)*n;
    return sum;
}
加载中
0
aremeng
aremeng
调用函数名打错了
aremeng
aremeng
点击此处输入评论
琴声悠扬TODO
琴声悠扬TODO
改正确了,还是错,是结果只有一个,,永远都是2的,
0
aremeng
aremeng
阶乘求和什么意思?为什么要用%和/=呢?
琴声悠扬TODO
琴声悠扬TODO
就是输入一个数,求所有满足一下条件的, 阶乘和数是恰好等于自身各位数字阶乘的和的数,如145是,因为145 = 1!+4!+5!;
0
hanjieson
hanjieson
factorial函数倒数第二行
aremeng
aremeng
哦,刚看到之前的回复,挺隐蔽的问题。
aremeng
aremeng
没在电脑上调,不过真的看不出错误,前面几位说的都没道理。是不是调试的时候给的值太小了?
琴声悠扬TODO
琴声悠扬TODO
改了, return factorial(n-1)*n; ,结果是一样的,,,还是错
0
charsunny
charsunny

n<=1 return 1

0
风之轮
风之轮
余数为0的情况你没有判断啊,当为0时返回0
0
欣儿
欣儿

int sum=0;放for循环外。

还有//求一个数的阶乘这个函数哪里有用到?

这个

       if(sum==i)
            cout<<sum<<"  ";

到底想表达什么?i可能因为和sum相等就输出结果?

sum不是最后的结果吗?需要根据这条件来?

还有,主函数实在不知道在表达什么?怎么会用到递归?那你写的单独那个有什么用?


0
aremeng
aremeng
if(n!=1) sum=factorial(n-1)*n; return sum;
0
z
zhoutianzuo
int factorial(int n)       //求一个数的阶乘
{
    int sum=1;
    if(n==1 || n == 0)
        return sum;
    else
       return sum=factorial(n-1)*n;
    return sum;
}
返回顶部
顶部