我需要一个程序的帮助。我必须编写一个递归函数来打印这样的直角三角形(对于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);
}