首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用递归打印星型显示的是额外的一行。

使用递归打印星型显示的是额外的一行。
EN

Stack Overflow用户
提问于 2020-10-03 13:04:06
回答 1查看 1.9K关注 0票数 1
代码语言:javascript
复制
#include<stdio.h>

void printPattern(int n);

int main() {
    int n =4;    
    printPattern(n);
    return 0;
}

void printPattern(int n){
    if (n=1){
        printf("*\n");
        return;
    }

    printPattern(n-1);

    for(int i=0;i< (2*n-1);i++){
        printf("*");
    }
    printf("\n");
}

在这里,n的值是4,所以在void语句中不应该工作,因为n不等于1,而且它不会打印*,但是如果运行代码,它会打印*,我不知道为什么。N值为4,因此它应该跳过if语句,然后n值由于printPattern(n-1)而变成3,然后它将在1-2-3行中打印1-3-5星。

代码语言:javascript
复制
*   
*** 
*****

但是如果你运行代码,它会在1-2-3-4行中打印出1-3-5-7星。

代码语言:javascript
复制
*  
***  
*****  
*******

循环发生在递归之后,因此它应该打印3行(1-3-5星),而不是4行(1-3-5-7星)。

我正在学习用Youtube的递归方法逐行打印奇数的星号,谁能给我解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-03 13:31:23

if(n=1)( n==1) 你的程序都很好!只是一个小小的错误:p

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64184600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档