#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星。
*
***
*****但是如果你运行代码,它会在1-2-3-4行中打印出1-3-5-7星。
*
***
*****
*******循环发生在递归之后,因此它应该打印3行(1-3-5星),而不是4行(1-3-5-7星)。
我正在学习用Youtube的递归方法逐行打印奇数的星号,谁能给我解释一下吗?
发布于 2020-10-03 13:31:23
if(n=1)或( n==1) 你的程序都很好!只是一个小小的错误:p
https://stackoverflow.com/questions/64184600
复制相似问题