在C中使用递归的直角三角形



我需要一个程序的帮助。我必须编写一个递归函数来打印这样的直角三角形(对于n==4(:

*
* *
* * *
* * * *

n为基础长度。我可能不使用循环、全局变量或static关键字。

到目前为止,我有一个打印n:的程序

#include <stdlib.h>
void triangle(int n);
int main() {
int n;
printf("Write n: ");
scanf("%d", &n);
triangle(n);
return 0;
}
void triangle(int n) {
if (n != 0) {
triangle(n - 1);
printf("%d", n);
printf("n");
}
}

那么,我如何打印这样的三角形,我的程序对完成这项任务有帮助吗?

如果你想使用递归,你的代码应该是这样的:

#include <stdio.h>

// function to print a row 
void printn(int num); 
// function to print the pattern 
void pattern(int n, int i); 

// driver function 
int main() 
{ 
int n;
if(scanf("%d", &n) != 1)
{
printf("Invalid number");
return 1;
} 
pattern(n, 1); 
return 0; 
}
void pattern(int n, int i) 
{ 
// base case 
if (n == 0) 
return; 
printn(i); 
printf("n");

// recursively calling pattern() 
pattern(n - 1, i + 1); 
}
void printn(int num) 
{ 
// base case 
if (num == 0) 
return; 
printf("* "); 

// recursively calling printn() 
printn(num - 1); 
}

最新更新