| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 459 人关注过本帖
标题:简单的函数调用问题
只看楼主 加入收藏
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:8 
简单的函数调用问题
#include <stdio.h>
static int sum = 0;
int deal(int m,int n)
{
    if (n==0) return 1;
    else if (n==1) return(m);
    else sum += deal(m-1,n-1) + deal(m-1,n);
}
void main()
{
    deal(2,2);
    printf ("%d",sum);
}
为什么不能实现下面问题呢 7.38  输出没结果 直接结束
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: void 问题 include return 
2012-04-15 18:59
墨清扬
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:294
专家分:817
注 册:2011-10-4
收藏
得分:1 
注意第一条,n和m的大小关系是有要求的

酱油实习生
2012-04-15 19:05
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
恩恩 现在想想 有很多了复杂的地方了  第二次调用的 时候 发现时死循环调用了 因为n的值一直不变

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-04-15 19:06
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
哈哈 如果第二次调用改成 m-n答案可以出来 不知道对不对

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-04-15 19:08
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
哈哈 如果第二次调用改成 m-n答案可以出来 不知道对不对
不对的答案

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-04-15 19:10
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <stdlib.h>

static [local]1[/local]int sum = 0;
int deal(int m,int n)//递归最重要的是递归出口,楼主这个似乎...
{
    system("pause");
    if (n==0) return 1;
    else if (n==1) return(m);
    else sum += deal(m-1,n-1) + deal(m-1,n);
}
int main()
{
    deal(2,2);
    printf ("%d\n",sum);
    return 0;
}



捕获.PNG (51.21 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册

编程之路定要走完……
2012-04-15 19:14
Wikyo_hoho
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:188
注 册:2012-3-12
收藏
得分:25 
是7.39吧?用递归
程序代码:
#include <stdio.h>
static int sum = 0;
int deal(int n,int m)
{
    if(n>m-n)    return deal(m-n,m);
    if(n==0) return 1;
    else if(n==1) return m;
    else return deal(n-1,m-1)+deal(n,m-1);
}
void main()
{
    sum=deal(3,10);
    printf ("%d",sum);
}

 
2012-04-15 19:16
Wikyo_hoho
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:31
专家分:188
注 册:2012-3-12
收藏
得分:2 
你的那条else sum += deal(m-1,n-1) + deal(m-1,n); 里 deal(m-1,n);的n不减少,但你的结束条件是判断n的值,所以死循环
2012-04-15 19:19
cqm9266
Rank: 3Rank: 3
来 自:福建
等 级:论坛游侠
帖 子:174
专家分:186
注 册:2011-10-28
收藏
得分:0 
恩 谢谢大家了 学习了

没病的人说有病的人有病,有病的人说没病的人有病。到底是谁有病?
2012-04-15 19:30
快速回复:简单的函数调用问题
数据加载中...
 
   



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

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