| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2564 人关注过本帖
标题:思考了个小时了
只看楼主 加入收藏
sanyec
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-1-6
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
思考了个小时了
#include<iostream>
using namespace std;
int to=(0);
int func(int x)
{
    int i=(0);
    static int n(0);
    n++;
    to++;
    if(x>0)
    {
        cout<<"函数被调用"<<endl;
        i=func(x-1)+x;
        cout<<x<<endl;
        return i;
    }
}
int main(int y)
{
    int i(0);
    int c(0);
    i=func(9);
    c=main(100);
    cout<<i<<"t"<<to<<endl;
    return 0;

}
学过很多种编程 都没深入了解过函数 今天在给别人答题的时候 以为if语句在单独情况下 不管比较值相差多少 只不过是一次带过 不会循环 结果给了别人很小白的答案
后来自己把代码写了执行 发现函数被调用次数是参数的值 然后我把main 参数值写个100 结果整个程序从头到尾都在循环 顿时懵了
2016-01-06 20:46
sanyec
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-1-6
收藏
得分:0 
根据反汇编来看 func内的语句从后到前每一行都同时入栈9次 然后call火山爆发一样释放出来 居然还有这尿性 吓我一跳
2016-01-06 21:28
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:20 
int main(int y)
{
    int i(0);
    int c(0);
    i=func(9);
    c=main(100);   这是咋想的呢  无限循环吗  下面的语句没有机会被执行的  main也不是不可以被调用  但是你要界定退出条件的

DO IT YOURSELF !
2016-01-12 11:10
hulei811
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2016-3-22
收藏
得分:0 
if(x>0)
    {
        cout<<"函数被调用"<<endl;
        i=func(x-1)+x;
        cout<<x<<endl;
        return i;
    }
递归了
2016-03-22 17:41
快速回复:思考了个小时了
数据加载中...
 
   



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

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