| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3908 人关注过本帖
标题:打印1到5的阶乘,已经编程完毕,但是没有得到想要的结果,问题出哪了?
只看楼主 加入收藏
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
结帖率:82.93%
收藏
已结贴  问题点数:5 回复次数:12 
打印1到5的阶乘,已经编程完毕,但是没有得到想要的结果,问题出哪了?
#include<stdio.h>
long fac(int n)
{
     long f=1;
    f=f*n;
    return f;
}
main()
{
    int k;

         for(k=1;k<=5;k++)
        {
        printf("%d!=%d\n",k,fac(k));
        }
    printf("\n");
}
搜索更多相关主题的帖子: return 
2013-03-26 10:18
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:1 
输出整型,调用时怎么是long

仰望星空...........不忘初心!
2013-03-26 10:24
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:1 
long fac(int n)
 {
      long f=1;
      for (int i = 1; i <= n;i++) {
         f *=i;
      }
     return f;
 }

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-03-26 10:26
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
收藏
得分:0 
回复 3楼 yuccn
似乎可以定义静态变量,怎么定义?
2013-03-26 10:31
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
以下是引用abc594986308在2013-3-26 10:31:23的发言:

似乎可以定义静态变量,怎么定义?
不要把简单问题 复杂化

DO IT YOURSELF !
2013-03-26 10:32
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:1 
你的算法有问题,fac()函数应该写成递归函数
#include<stdio.h>
long int fac(int n)
{
    if(n<=1)
        return 1;
    else
        return n*fac(n-1);
}
main()
{
    int k;

         for(k=1;k<=5;k++)
        {
        printf("%2d!=%ld\n",k,fac(k));
        }
    printf("\n");
}

三十年河东,三十年河西,莫欺少年穷!
2013-03-26 10:32
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
收藏
得分:0 
回复 5楼 wp231957
我用静态类型定义下了变量,感觉好轻松,程序更加简化。请大神过目:
#include<stdio.h>
long fac(int n)
{
    static long f=1;
    f=f*n;
    return f;
}
main()
{
    int k;

         for(k=1;k<=5;k++)
        {
        printf("%d!=%ld\n",k,fac(k));
        }
    printf("\n");
}
2013-03-26 10:37
abc594986308
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:116
注 册:2013-3-18
收藏
得分:0 
回复 6楼 韶志
谢了,这个我懂。只是想更加简化,我查了下,可以用静态变量
2013-03-26 10:38
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 8楼 abc594986308
  确实   静态变量将上次的调用结果作为本次的初值,确实很方便

三十年河东,三十年河西,莫欺少年穷!
2013-03-26 10:42
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
简单问题复杂化、、、、

在递推中加一个输出不就一次解决了?

何必每次都从头算一遍


[fly]存在即是合理[/fly]
2013-03-26 11:07
快速回复:打印1到5的阶乘,已经编程完毕,但是没有得到想要的结果,问题出哪了? ...
数据加载中...
 
   



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

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