清泛IT社区App Inventor 2 中文社区

搜索

扫码访问移动社区 移动社区,您的掌上技术专家

关注我,精彩不错过! 关注我,精彩不错过!

扫码安装最新版AI伴侣 最新版AI伴侣v2.72

Aia Store .aia 源码一站式解决方案 发布日志AI2连接测试ai2Starter模拟器

开通会员送SVIPApp Inventor 2 拓展有奖征文 VIP会员享专有教程,免费赠送基础版*技术支持服务! AI2入门必读中文文档中文教程IoT专题

查看: 971|回复: 4
打印 上一主题 下一主题

如递归所有控件路径,函数将导致运行时堆栈溢出

该用户从未签到

6

主题

15

帖子

132

积分

初级会员

Rank: 2

积分
132
跳转到指定楼层
楼主
发表于 2016-01-15 15:55:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下
#include<iostream>
#include<stdio.h>
#include<limits.h>
int max(int a,int b)
{
        if(a>b)
                return a=max(a,b);
                else return b=max(a,b);
}
int max(int a,int b);
int main()
{
        int x,y,z;
        int max(int a,int b);
        printf("input tow numbers:\n");
        scanf_s("%d,%d",&x,&y);
        z=max(x,y);
        printf("maxmum=%d",z);
}
不能正常运行只能输入一个数提示
1>c:\users\administrator\desktop\user\video\video\video.cpp(9): warning C4717: “max”: 如递归所有控件路径,函数将导致运行时堆栈溢出
求解答{:wg:}
  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    沙发
    发表于 2016-01-15 16:07:01 | 只看该作者
    首先这段程序的几个问题:
    1、int max(int a,int b); 两次函数申明都是多余的:函数定义在调用地方的前面,就不用申明;反之,必须先申明,然后在调用地方的后面实现函数体。
    2、max 是自定义的递归函数,但是这是个无限递归函数,没有跳出函数(break)的条件,因此会无限调用直至栈空间溢出。
    3、max 在math.h中已经有现成的函数。

    点评

    <math.h>中没有max函数。但<stdlib.h>中有__max宏可以使用。  发表于 2016-01-15 16:12
    清泛网 - 专注IT技能提升
  • TA的每日心情
    开心
    2024-02-17 18:16
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    546

    主题

    715

    帖子

    1万

    积分

    管理员

    这里没有广告...

    Rank: 9Rank: 9Rank: 9

    积分
    10709
    QQ
    板凳
    发表于 2016-01-15 16:07:32 | 只看该作者
    1. #include<iostream>
    2. #include<stdio.h>
    3. #include<limits.h>
    4. int max(int a,int b)
    5. {
    6.         if(a>b)
    7.             return a;
    8.         else
    9.             return b;
    10. }

    11. int main()
    12. {
    13.         int x,y,z;
    14.         printf("input tow numbers:\n");
    15.         scanf_s("%d,%d",&x,&y);
    16.         z=max(x,y);
    17.         printf("maxmum=%d",z);
    18. }
    复制代码
    清泛网 - 专注IT技能提升

    该用户从未签到

    6

    主题

    15

    帖子

    132

    积分

    初级会员

    Rank: 2

    积分
    132
    地板
     楼主| 发表于 2016-01-15 16:18:18 | 只看该作者
    {:gza:}{:gza:}谢谢
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    © 2024 tsingfun.com, Inc.  沪ICP备2020034476号-1  沪公网安备31011702000040号

    GMT+8, 2024-11-22 21:02 , Processed in 0.023294 second(s), 35 queries .