#include <stdio.h>
int main(void)
{
int f(int a);
int m, n;
printf("请输入一个数:\n");
scanf_s("%d", &m);
for (n = 0; m != 1; n++)
m = f(m);
printf("经角谷定理得经过 %d 次可得到", n);
return 0;
}
int f(int a)
{
if (a % 2 == 1)
a = a * 3 + 1;
else
a = a / 2;
return a;
}
输入5得到5 求此函数的详细执行流程 被调用函数的a与主函数完全不相干呀 此函数怎么运行的
被调用函数的a与主函数的m是相互传递的。没有不相干。
循环 m = f(m); 调用f函数把主函数的m的值 传递给 f函数的a,在f函数中改变a的值之后,return a; 又把a的值返回重新赋值给主函数的m。
下次循环又把主函数的m的值 传递给 f函数的a。。。。。。。
这样直到m等于1为止。
如有帮助,望采纳!谢谢!
a是函数的形参,当你把m的值传入时,a就相当于m,经过运算后,再把m经过运算后的值给返回