我正在使用一个函数在C.中打印从1到N的数字。但问题是,变量必须在内部定义,不应该使用循环。函数是通过名称调用的。简而言之,函数应该在每次调用时打印一个数字。我无法编写程序代码,因为变量是在函数内声明的。请告诉我这是可以的。
例如:要打印1到5之间的数字,但它只打印'1'5次。
#include <stdio.h>
void main()
{
repeat_function();
repeat_function();
repeat_function();
repeat_function();
repeat_function();
return 0;
}
void repeat_function()
{
int a=1;
printf (%d,a);
a = a + 1;
}
答案 0 :(得分:2)
最简单的方法是将数字作为参数的函数。
如果参数大于1,则此函数使用parameter - 1
调用自身。最后,它打印参数的值并返回。
修改强> 由于您不需要传递参数或使用静态变量,因此可以使用全局变量。
#include <stdio.h>
int value = 10;
void recursion() {
if (value > 0) {
int out = value;
value--;
recursion();
printf("%d", out);
}
return;
}
int main()
{
recursion();
return 0;
}
这不是好的风格,但它可以满足您的要求。
<强> EDIT2 强>
使用您的代码示例我使用全局变量来讨论此解决方案:
#include <stdio.h>
int value = 1; // <-- global variable
void main()
{
repeat_function();
repeat_function();
repeat_function();
repeat_function();
repeat_function();
return 0;
}
void repeat_function()
{
printf (%d,value);
value += 1;
}
答案 1 :(得分:1)
void printMe(int num) {
if (num == N+1) { return; }
printf("%d", num);
printMe(num+1);
}
答案 2 :(得分:0)
你可以像这样使用静态变量:
static int i = 1;
静态变量仅声明一次。
您也可以声明全局变量。 全局变量只是在函数外声明的变量。这些函数可以在每个sub_scope中使用。
或者你可以这样做:
#include <stdio.h>
int ft_loop(int i, int limit) {
printf("i = %d", i);
if (i > limit)
return 0;
ft_loop(i++, limit);
}
int main()
{
ft_loop(1, 30);
return 0;
}