我在C:
中编写递归函数时遇到问题void func(int n)
对于给定数量的n打印" 1"并且 n 在它之后归零。
例如:
func(3);
打印:1000
func(5);
打印:100000
不允许使用全局变量(函数外部),并且不得增加参数计数。不允许其他辅助功能。
答案 0 :(得分:0)
只是一些指示:
答案 1 :(得分:0)
我建议你研究一下静态变量。你可以设置一个静态变量来判断你的函数是否被递归调用。如果你不允许使用全局变量,那只是一个棘手的解决方法。当您的递归完成后,只需将其设置为下一次调用即可。
答案 2 :(得分:0)
您可以使用两个功能解决此问题,例如func
和func_rec
。 func
会打印1
,它会调用递归函数func_rec
,它只会打印零(递归)。
答案 3 :(得分:-1)
#include <stdio.h>
void func(int k){
if(k==0){
printf("1");
return;
}
func(k-1);
printf("0");
}
int main(){
func(3);
return 0;
}
答案 4 :(得分:-1)
#include <stdio.h>
void func(int n)
{
static one = 1;
if (one == 1){
printf("1");
one--;
func(n - 1);
}
else {
if (n < 0){
printf("\n");
return;
}
else {
printf("0");
func(n - 1);
}
}
}
int main() {
func(5);
return 0;
}
代码非常简单,所以即使看起来它是一个功课,我也会给出代码。
您之前提出的问题表明,您不是很喜欢编码。我想要做的是通过发布代码来减少你的挫败感,但有一点麻烦。
请回答我们为什么我给出的代码不是“纯粹”的功能?为什么这个解决方案应该放弃具有全局存储的解决方案。
你应该学习这些东西,非常有趣:)