标题:[求助]关于递归调用
只看楼主
Merry_sf
Rank: 2
等 级:论坛游民
帖 子:30
专家分:24
注 册:2012-12-9
结帖率:100%
已结贴  问题点数:20 回复次数:7 
[求助]关于递归调用
*/
void f(int* x,int n)
{
    if(n>=10)
        //if(judge(x))  show(x);
        return;
    x[n]=0;
    f(x,n+1);
    x[n]=1;
    f(x,n+1);
}
int main(int argc,char* argv[])
{
    int x[]={0,0,0,0,0,0,0,0,0,0};
    f(x,0);
    return 0;
}
搜索更多相关主题的帖子: void return 
2013-02-16 19:11
Merry_sf
Rank: 2
等 级:论坛游民
帖 子:30
专家分:24
注 册:2012-12-9
得分:0 
没整明白在里面是怎么变化的。  f()里面的那两个f()是同时进行的?
2013-02-16 19:13
Merry_sf
Rank: 2
等 级:论坛游民
帖 子:30
专家分:24
注 册:2012-12-9
得分:0 
菜鸟一枚  大神勿喷
2013-02-16 19:14
Merry_sf
Rank: 2
等 级:论坛游民
帖 子:30
专家分:24
注 册:2012-12-9
得分:0 
没人说两句? - -  好吧  问题弱智了。。
2013-02-16 19:19
chololong
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2013-1-24
得分:5 
#include<stdio.h>
void f(int x[],int n)
{
    if(n>=5)
        //if(judge(x))  show(x);
        return;
    x[n]=0;
    printf("n=%d,x[n]=%d\n",n,x[n]);
    f(x,n+1);
    x[n]=1;
    printf("n=%d,x[n]=%d\n",n,x[n]);
    f(x,n+1);
}
int main(int argc,char* argv[])
{
    int x[]={0,0,0,0,0,0,0,0,0,0};
    f(x,0);
    return 0;
}
加了两个个输出语句,自己可以程序运行过程(我把递归次数改小了,10次我这机子运行出来有问题)。
2013-02-17 18:23
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
得分:10 
递归的思想不是让你理解这个过程物理上具体是怎么运行的,关键在于抽象思维,逻辑运行。递归的抽象性很强的。也许很小的递归问题,你还能想明白是怎么运作的,规模稍微大那么一点点,你就想不通了,关键在于抽象性思维。慢慢去悟吧
2013-02-17 18:41
小旭哥
Rank: 2
等 级:论坛游民
帖 子:106
专家分:72
注 册:2012-11-4
得分:5 
不是同时进行的  是先第一个f()一直递归,再全部返回,然后第二个f()递归,再全部返回。
2013-02-17 18:43
Merry_sf
Rank: 2
等 级:论坛游民
帖 子:30
专家分:24
注 册:2012-12-9
得分:0 
回复 7楼 小旭哥
嗯啊 这个知道 只是感性上理解不过来 总感觉是同时进行的 你说得对啊 想这个过程没用 这是个抽象思维 = =
2013-02-17 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-398662-1-1.html




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

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