| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 817 人关注过本帖
标题:帮我找找问题所在,谢谢
只看楼主 加入收藏
qqoo6789
Rank: 1
等 级:新手上路
帖 子:34
专家分:7
注 册:2013-7-11
结帖率:87.5%
收藏
已结贴  问题点数:15 回复次数:15 
帮我找找问题所在,谢谢
//n!=n*(n-1)!,刚学函数定义,想用该法求数学上的阶乘算法

# include <stdio.h>

float f(float x)
{
    float n,sum;
    sum=n*f(n-1);
    return (sum);
}

int main (void)
{
    int n;
    float sum;
    printf("请输入n\n");//14
    scanf("%f",&n);
    sum=f(n);
    printf("n!=%f\n",sum);

    return 0;
}

没有语法错误。
但是 求不出答案。
执行的时候,没有答案输出。

请帮我看看,谢谢
搜索更多相关主题的帖子: include return 数学 
2013-08-06 21:34
qqoo6789
Rank: 1
等 级:新手上路
帖 子:34
专家分:7
注 册:2013-7-11
收藏
得分:0 
这是那个递归。。。
2013-08-06 21:36
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
f(n-1)=多少?你知道?递归你会用吗

思考赐予新生,时间在于定义
2013-08-06 21:41
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:2 
给一段递归代码你参考一下
程序代码:
#include<cstdio>
long ff(int n)
{
    long f;
    if(n<0) printf("n<0,input error");
    else if(n==0||n==1) f=1;
    else f=ff(n-1)*n;
    return(f);
}
void main()
{
    int n;
    long y;
    printf("\ninput a inteager number:\n");
    scanf("%d",&n);
    y=ff(n);
    printf("%d!=%ld",n,y);
}


思考赐予新生,时间在于定义
2013-08-06 21:45
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:0 
float f(float x)
{
    float sum;
    sum=x*f(n-1);
    return (sum);
}
2013-08-06 22:23
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:0 
float f(float x)
{
    float sum;
    if(x>0)
        sum=x*f(x-1);
    return (sum);
}
2013-08-06 22:24
人_神
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:44
专家分:103
注 册:2013-8-1
收藏
得分:2 
递归需要终止条件,否则就是死循环
2013-08-06 22:26
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:5 
以下是引用qqoo6789在2013-8-6 21:34:00的发言:

//n!=n*(n-1)!,刚学函数定义,想用该法求数学上的阶乘算法

# include <stdio.h>

float f(float x)
{
    float n,sum;
    sum=n*f(n-1);
    return (sum);
}

int main (void)
{
    int n;
    float sum;
    printf("请输入n\n");//14
    scanf("%f",&n);
    sum=f(n);
    printf("n!=%f\n",sum);

    return 0;
}

没有语法错误。
但是 求不出答案。
执行的时候,没有答案输出。

请帮我看看,谢谢




明眼处的错误大概有四处吧

一、定义的 n 的类型是整型吧,你 scanf("%f",&n);中%f是要干嘛???

二、14的阶乘是多少你自己拿计算器算算,float类型的sum   超不超界

三、你定义的函数中float f(float x),弱弱的问一句 x  在你编写的函数中用到了吗

四、循环结束的条件。。。。。

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-08-07 08:03
天楚
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:楚地
等 级:小飞侠
帖 子:550
专家分:2113
注 册:2013-3-14
收藏
得分:0 
顶8楼!!!

没有哪条路好走,选择了,就坚持下去~~~~
2013-08-07 08:07
月祭樱冢
Rank: 2
等 级:论坛游民
帖 子:83
专家分:97
注 册:2013-7-15
收藏
得分:0 
主函数中貌似没有声明f函数

算法是程序的灵魂
2013-08-07 08:57
快速回复:帮我找找问题所在,谢谢
数据加载中...
 
   



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

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