这代码,我改了好几版:主体没变,主要是加了打印信息,把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$
都不知道你题目是什麽,谁知道为啥结果不对