我创建了这个功能(见下文),效果很好;但是,我的任务是更改函数以获取一个参数,该参数仅为我传递给它的函数执行相同的操作。
int collatz(){
int temp, num;
//num = 0;
cout << "pick a number to turn into one:";
cin >> num;
temp = 0;
while(num != 1){
if(num%2 == 0){
num = num/2;
temp++;
}
else if(num&2 != 0){
num = (3*num) + 1;
temp++;
}
}
cout << num << "number of times run: " << temp;
return 0;}
我想出了这个;但是,它给了我一个错误:
error C3861: 'collatztwo': identifier not found warning C4554: '&' :
check operator precedence for possible error;
use parentheses to clarify precedence
int collatztwo(int a){
int temp, num;
//num = a;
temp = 0;
while(a != 1){
if(a%2 == 0){
a = a/2;
temp++;
}
else if(a&2 != 0){
a = (3*a) + 1;
temp++;
}
}
cout << "looped: " << temp;
return 0;}
答案 0 :(得分:0)
根据评论中列出的错误OP:
error C3861: 'collatztwo': identifier not found
当您创建新功能时,您是否在呼叫站点之前添加了prototype?您必须在源文件的顶部声明int collatztwo(int a);
,或者在使用它之前移动函数定义。
warning C4554: '&' : check operator precedence for possible error; use parentheses to clarify precedence
正如评论中已经提到的,你需要在a&2
周围加一对括号,否则它会做错事。 else if ((a&2) != 0){