想问一下这个有什么问题吗,输出结果不对

img


想问一下这个有什么问题吗,想求和的阶层,但是一直求得不是正确得数,应该怎么改呢,在尽量不改源代码的前提下?

这代码,我改了好几版:主体没变,主要是加了打印信息,把int都改成long long了。其实并没有看出你的代码有问题,最后还用计算其计算了15的阶乘。我猜有问题的会不会是你的printf语句啊?写的不是%lld,而是%d?


#include <stdio.h>
#include <stdio.h>

#define _DEBUG_
#ifdef _DEBUG_
#define DEBUG_INFO(format,...)  printf("%s:%d : "format"\n",__func__,__LINE__,##__VA_ARGS__)
#else
#define DEBUG_INFO(format,...)
#endif

long long myfun1(long long n)
{
    long long p = 1;
    long long i;
    for(i = 1;i <= n;i++){
        p = p * i;
    }
    DEBUG_INFO("n = %lld jiecheng_%lld = %lld\n",n,n,p);
    return p;
}
long long myfun2(long long n)
{
    long long p = 0, i;
    for(i = 1;i <= n;i++){
        p = p + i;
    }
    DEBUG_INFO("n =%lld sum_%lld  = %lld",n,n,p);
    return myfun1(p);
}
int main()
{
    long long i = 0;
    long long sum = 0;
    DEBUG_INFO("sum = %d %lu",5,sizeof(long long));
    for(i = 2;i <= 5; i++ ){
        sum = sum + myfun2(i);
    }

    DEBUG_INFO("sum = %lld",sum);
    return 0;
}


执行结果

csdn@ubuntu:~/git_learn/git_learn$ ./a.out
main:34 : sum = 5 8
myfun2:27 : n =2 sum_2  = 3
myfun1:18 : n = 3 jiecheng_3 = 6

myfun2:27 : n =3 sum_3  = 6
myfun1:18 : n = 6 jiecheng_6 = 720

myfun2:27 : n =4 sum_4  = 10
myfun1:18 : n = 10 jiecheng_10 = 3628800

main:39 : sum = 3629526
csdn@ubuntu:~/git_learn/git_learn$ gcc main.c
csdn@ubuntu:~/git_learn/git_learn$ ./a.out
main:34 : sum = 5 8
myfun2:27 : n =2 sum_2  = 3
myfun1:18 : n = 3 jiecheng_3 = 6

myfun2:27 : n =3 sum_3  = 6
myfun1:18 : n = 6 jiecheng_6 = 720

myfun2:27 : n =4 sum_4  = 10
myfun1:18 : n = 10 jiecheng_10 = 3628800

myfun2:27 : n =5 sum_5  = 15
myfun1:18 : n = 15 jiecheng_15 = 1307674368000

main:39 : sum = 1307677997526
csdn@ubuntu:~/git_learn/git_learn$


img

都不知道你题目是什麽,谁知道为啥结果不对