我想知道如何让一个函数考虑一个给定的参数作为一个静态变量。例如,我试过,没有成功,生成hailstone号码:精心设计一个函数参数作为静态变量
#include<stdio.h>
int hailstone(int);
int n; /* n is an extern variable*/
int main(){
hailstone(n);
return 0;
}
int hailstone(int n){
static int m = n; /*not possible because n is not constant*/
if(m % 2 == 0 && m != 1)
hailstone(m /= 2);
else if(m != 1)
hailstone((m *= 3) + 1);
else
exit(0); /*Is the use of exit() correct, in this case?*/
return 0;
}
我想用一个静态变量来详细说明n。否则,每个递归调用将在整个参数n
上运行,因此会持续不断,从未达到案例库。
几个问题:
- 这是否代表想法可行的问题解决办法?
- 这个想法是否代表合理/有效的方法来解决问题?
- 是否
exit(0)
使用正确,类似的情况?
'静态INT米;然而,m = n;'是可能的。 – Bathsheba
在递归函数中使用全局变量会挫败递归的重点,所以您肯定需要重新考虑您的解决方案。在任何情况下,你的函数都不会显示任何基本情况(除0以外,无法达到)。在你看来,基本情况是什么?为什么你认为递归不能达到它? – rici
@ricie,是不是'm <1'表示的案例库?也许,因为最终的结果应该是1,'m == 1'可能是更好的基本情况,你是对的。另外,我正在徘徊在如何超越全球变量的问题上。 – Worice