这是C中的递归函数(函数调用本身),主要情况是: 并返回变量“i”的值,该值必须为 6,但如所解释的那样为 1:
if(i==6){return i;} 但是返回的值是 1 而不是 6... 注意 i 必须 == 6 才能执行 返回...
这是代码:
#include<stdio.h>
int func1(int i){
if(i == 6) { // Base Case
printf("\nEnd1");
return i;
}
printf("%d ", i);
func1(i + 1);
// printf("\nEnd1");
return i;
}
int main()
{
printf("\n%d", func1(1));
return 0;
}
我收到 1 作为我的值,而不是 6。
这是我的输出: 1 2 3 4 5 结束1 1
预期输出: 1 2 3 4 5 结束1 6
不知道该把头扔到哪里...
有什么解决办法吗?
以下链接打开新网站页面点击这里↗🌐查看代码运行情况。
(这个问题遵循“C Multiple Func() printf - With no Reason”中的问题。
函数的第一次递归调用得到值1
printf("\n%d", func1(1));
并且该值在函数调用中不会被更改
int func1(int i){
if(i == 6) { // Base Case
printf("\nEnd1");
return i;
}
printf("%d ", i);
func1(i + 1);
// printf("\nEnd1");
return i;
^^^^^^^^^
}
该函数的代码片段返回的值
if(i == 6) { // Base Case
printf("\nEnd1");
return i;
}
无处使用。
尝试改变这些说法
func1(i + 1);
到 我 = func1(i + 1);