回 帖 发 新 帖 刷新版面

主题:关于递归计数~~~

#include<stdio.h>
#include<stdlib.h>
void count(int);
int i=0;
int b;
int main(int argc,char* argv[])
{
    sscanf(argv[1],"%d",&b);
    count(i);
    printf("%d\n",b);
    return EXIT_SUCCESS;
}
void count(int i)
{
    if(b>0)
    {
        if(i<b)
        printf("%d,",i);
        i++;
        count(i)
    }else{
                if(i>b)
                printf("%d,",i);
                i--;
              count(i);
            }
}  
[size=2]我输入5,输出0,1,2,3,4,5是对的
应该输入-5,输出为0,-1,-2,-3,-4,-5  可只输出了-5  ?????[/size]

回复列表 (共2个回复)

沙发

最后一段  }else{
                if(i>b)
                printf("%d,",i);
                i--;
              count(i);
            }


改成:else if(b<i)
    {
        cout<<i<<"  ";i--;
        count(i);
    }

板凳

条件语句用错,当i<-5时仍然进入else后的语句,经过递归会进入前面i<b的条件语句,i++,之后i的大小一直在停留在-5上,你自己仔细分析下。

我来回复

您尚未登录,请登录后再回复。点此登录或注册