我是这个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;
}