完全初学者。
练习是制作一个接受输入的函数,如果输入是偶数,则完成一定的计算。如果奇数,计算完成。然后重新分配新值,序列继续直到达到 1。
例子: 如果起始整数为 1,则返回值应为 0,因为无需任何步骤即可达到 1。如果起始整数为 3,则序列为:3、10、5、16、8、4、2、1,返回值应为 7。
几个小时以来一直在搞乱这个,我一直从计数器返回 0。
(main() 仅用于测试目的)
谢谢
#include <iostream>
using namespace std;
int hailstone(int outinput);
int main()
{
int outinput=10, counter;
hailstone(outinput);
cout << counter << endl;
return 0;
}
int hailstone(int outinput)
{
int counter;
for(outinput; outinput == 1; )
{
if(outinput % 2 == 0)
{
outinput = outinput / 2;
counter++;
}
else if(outinput % 2 != 0)
{
outinput = outinput * 3 + 1;
counter++;
}
}
return counter;
}
最佳答案
您没有收到 hailstone()
返回的内容。
这样做:
counter = hailstone(outinput);
在方法hailstone
中,您增加了counter
而没有初始化它。这将导致您获得未定义的行为。
在hailstone
方法中初始化counter
int counter = 0;
最后,您的 for 循环终止条件:outinput == 1
是错误的。此条件意味着仅当 outinput
为 1
时循环才会迭代。使用 outinput != 1
意味着您将循环迭代直到 outinput
变为 1
。
关于C++ 函数练习 - 不断返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495207/