【问题标题】:Printing star patterns using recursion is showing an extra line使用递归打印星形图案显示多行
【发布时间】:2020-10-03 13:04:06
【问题描述】:
#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 函数中 if 语句不应该工作,因为 n 不等于 1 并且它不会打印 *,但如果你运行代码,它将打印 * 和我不知道为什么。 n 值为 4,因此它应该跳过 if 语句,然后 n 值将变为 3,因为 printPattern(n-1) 然后它将在第 1-2-3 行打印 1-3-5 个星

*   
*** 
*****

但如果您运行代码,它将在第 1-2-3-4 行打印 1-3-5-7 颗星

*  
***  
*****  
*******

循环发生在递归之后,因此它应该在此代码中打印 3 行(1-3-5 星)而不是 4 行(1-3-5-7 星),如果不使用 else 语句。

我正在学习使用 Youtube 的递归按递增顺序打印每行的奇数颗星,谁能给我解释一下。

【问题讨论】:

  • if (n=1) 应改为 if (n==1)。考虑使用 IDE 来测试和调试您的代码。
  • 投票结束为错字。
  • 哦,没注意到这个错误,谢谢指正

标签: c recursion


【解决方案1】:

让我笑了兄弟;-) if(n=1) 或 ( n==1) 您的程序一切正常!只是一个小错误=

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多