| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 632 人关注过本帖
标题:格式问题,阶乘
只看楼主 加入收藏
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
结帖率:90.91%
收藏
已结贴  问题点数:20 回复次数:9 
格式问题,阶乘
/*****************************************************/
/*1*/
#include"stdio.h"
main()
{
    int i=3;
    printf("%d %d\n",i,-(i++));/*先算i++,为何还会是-3*/
}
/*****************************************************/
/*2*/
#include"stdio.h"
long fun(long n)
{
    long f=1;   
    if(n==1)f=1;
    else
    {
        f=n*fun(n-1);/*什么原理*/
        printf("%ld\n",n);
    }
    return f;/*(f)为什么也可以*/
}
main()
{
    long n;
    scanf("%ld",&n);
    printf("%ld\n",fun(n));
}
搜索更多相关主题的帖子: include return 
2013-07-18 20:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
有些东西,不知道确实反而是好事。这就叫“为学日益,为道日损”。

授人以渔,不授人以鱼。
2013-07-18 20:21
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:4 
1 printf("%d %d\n",i,-(i++));/*先算i++,为何还会是-3*/

因为先把参数压栈,再自增,所以就printf 出来-3了

2  f=n*fun(n-1);/*什么原理*/
 递归。

3 return f;/*(f)为什么也可以*/

为什么不可以?

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-07-18 20:29
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:1 
两位说得都很好,我就不解释了

思考赐予新生,时间在于定义
2013-07-18 20:40
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
收藏
得分:0 
递推:不是应该  fun(n)=n*fun(n-1)=n*(n-1)*fun(n-2)=…=n*(n-1)*(n-2)*…*1 吗?
而它的结果却是 2*3*4*5*6*…*(n-2)*(n-1)*n
???

潇洒不可少!
2013-07-20 12:44
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:5 
以下是引用浮云之冰雪在2013-7-20 12:44:22的发言:

递推:不是应该  fun(n)=n*fun(n-1)=n*(n-1)*fun(n-2)=…=n*(n-1)*(n-2)*…*1 吗?
而它的结果却是 2*3*4*5*6*…*(n-2)*(n-1)*n
???
什么是递归?“归”字你懂吗?1*2*3*4*5与5*4*3*2*1结果一样,只是顺序不一样,递归函数就是从表达式顺序计算,按着相反的顺序执行出结果

思考赐予新生,时间在于定义
2013-07-20 12:55
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:1 
有的问题是编译器的问题

[ 本帖最后由 小小程序猿 于 2013-7-20 18:18 编辑 ]

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 18:13
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:1 
图片附件: 游客没有浏览图片的权限,请 登录注册

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-07-20 18:23
XiaoXiao_Ren
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
威 望:1
帖 子:80
专家分:198
注 册:2013-7-17
收藏
得分:4 
回复 楼主 浮云之冰雪
/*****************************************************/
/*1*/
#include"stdio.h"
main()
{
    int i=3;
    printf("%d %d\n",i,-(i++));/*先算i++,为何还会是-3*/
    //这个printf在不同的编译器中参数的结合方式是不同的,
    //现在一般是右结合方式,及先运行-(i++),而这个i的使用是先使用后做自加运算
    //所以一般的输出是4,-3
}
/*****************************************************/
/*2*/
#include"stdio.h"
long fun(long n)
{
    long f=1;   
    if(n==1)f=1;
    else
    {
        f=n*fun(n-1);/*什么原理*/   
        //即递归调用,要求当前的f的值需要求出fun(n-1)的值,当然这个fun(n-1)要再      //求哪个值,继续调用就可以了。
        printf("%ld\n",n);
    }
    return f;/*(f)为什么也可以*/
    //return (8) 都可以,f仅仅是一个变量,充作返回值可以的
}
main()
{
    long n;
    scanf("%ld",&n);
    printf("%ld\n",fun(n));
}

否极泰来
2013-07-20 18:42
浮云之冰雪
Rank: 2
等 级:论坛游民
帖 子:74
专家分:89
注 册:2013-5-11
收藏
得分:0 
我学会了。

潇洒不可少!
2013-07-22 21:00
快速回复:格式问题,阶乘
数据加载中...
 
   



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

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