标题:long factorial(int n)中long的意思是长整形变量吗?为什么要定义为long fa ...
只看楼主
scorpionchac
Rank: 1
等 级:新手上路
帖 子:34
专家分:6
注 册:2015-10-20
结帖率:75%
已结贴  问题点数:20 回复次数:4 
long factorial(int n)中long的意思是长整形变量吗?为什么要定义为long factorial(int n
#include <stdio.h>
// 函数声明
long factorial(int n);
long sum(long n);
int main(){
    printf("1!+2!+...+9!+10! = %ld\n", sum(10));
    return 0;
}
//求阶乘
long factorial(int n){
    int i;
    long result=1;
    for(i=1; i<=n; i++){
        result *= n;
    }
    return result;
}
// 求累加的和
long sum(long n){
    int i;
    long result = 0;
    for(i=1; i<=n; i++){
        //嵌套调用
        result += factorial(n);
    }
    return result;
}
这个程序中的子程序中的:long factorial(int n);
long sum(long n);  long都表示蛇魔意思啊?是指长整形变量吗?百度了下也没搞明白》》》

[此贴子已经被作者于2015-12-2 21:59编辑过]

搜索更多相关主题的帖子: 子程序 result return include 
2015-12-02 21:54
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:15 
long factorial(int n)中long的意思是长整形变量吗?
--- 是,你自己不看书吗?

为什么要定义为long factorial(int n)
--- 那你说要定义为什么?定义为 char factorial(int n) ?!

第一步,掏出你的计算器,先算出 1!+2!+3!+4!+5!+6!+7!+8!+9!+10!=4037913,然后算出log2(4037913)=21.9,于是你应该使用一个bit位数不小于22的整型就可以了,比如
程序代码:
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main( void )
{
    uint32_t sum = 0;
    for( uint32_t i=1,f=1; i<=10; ++i, f*=i )
        sum += f;
    printf( "%"PRIu32"\n", sum ); // 4037913
    return 0;
}

你的代码有错误,你看出来了吗?
result *= n; 应该是 result *= i;
result += factorial(n); 应该是 result += factorial(i);

2015-12-03 08:41
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:5 
这种问题,看书比查百度好,凡书必讲的。

授人以渔,不授人以鱼。
2015-12-03 12:19
scorpionchac
Rank: 1
等 级:新手上路
帖 子:34
专家分:6
注 册:2015-10-20
得分:0 
好吧!本人菜鸟  是在网络上自学的
以后的多看看书了
不过 我我用sizeof()看了下int  long int都是4字节这我就不明白了多写个long不浪费时间吗?

[此贴子已经被作者于2015-12-3 17:57编辑过]


小菜鸟
2015-12-03 17:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 3楼 scorpionchac
long是long int的简称。标准规定long不少于int,但不一定是int的两倍,這由编译器实现自己决定。在16位機上,int是16位的,long是32位;在32位機上,int是32位的,long是16位的2倍即32位。

用C/C++编程的,必须时刻警醒不能假定int有多少位,与此相关的一些类型,也因此不能假定。

[此贴子已经被作者于2015-12-3 19:17编辑过]


授人以渔,不授人以鱼。
2015-12-03 19:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459829-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021264 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved