你好,我是C的新手,我尝试过如何使用递归打印名称n次,但不知道哪里出了错



我是这个plz的新手,有人能帮我纠正这个程序吗。这是一个将输入的名称打印n次的程序

#include <stdio.h>
char* call(int i, int n,char name[30]){
if (i<=n)
return char name[30] ;
}
int main() {
int i, n;
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); 
printf("How many time do you want to print: ");
scanf("%d", &n);
for (i=1; i<=n; ++i)
{
printf("%sn",call(i,n,name[30]));
}
return 0;
}

递归是使用循环的一种方式,但由于函数调用,它会占用堆栈内存。在i达到n的值的情况下,递归函数总是有退出调用的条件。

#include <stdio.h>
void call(int i,char name[30]){
if(i==0)
return;
printf("%sn",name);
call(i-1,name);
}
int main() {
int n;
char name[30];
printf("Enter name: ");
fgets(name, sizeof(name), stdin); 
printf("How many time do you want to print: ");
scanf("%d", &n);
call(n,name);
return 0;
}

如果要进行递归,则不需要for循环。递归调用的数量表示循环。

试试看:

#include <stdio.h>
void call(int n, const char* name)
{
if (n <= 0) return;
if (n > 1) call(n-1 , name);
printf("%sn", name);
}
int main() 
{
int n = 5;
char name[30] = "Hello";
call(n, name);
return 0;
}

相关内容

最新更新