如何更改 的值p以1將其作為引數傳遞給遞回函式。這是我的代碼:
class Solution
{
void g(int n,int k,int *p){
if(k==0) return;
if(k%n==0) g(n,k-1,1);
cout<<p<< endl;
g(n,k-1,p 1);
}
public:
int josephus(int n, int k)
{ int p=1;
g(n,k,&p);
return p;
}
};
我收到此錯誤:
prog.cpp: In member function void Solution::g(int, int, int*):
prog.cpp:14:21: error: invalid conversion from int to int* [-fpermissive]
if(k%n==0) g(n,k-1,1);
^
prog.cpp:12:9: note: initializing argument 3 of void Solution::g(int, int, int*)
void g(int n,int k,int *p){
uj5u.com熱心網友回復:
該錯誤表示您不能將 anint作為引數傳遞給需要int *.
您的代碼中還有一個邏輯錯誤:
g(n,k-1,p 1);
這個遞回呼叫增加了指標值,這使得它指向傳入的物件,因為函式是這樣呼叫的:
{ int p=1;
g(n,k,&p);
由于您的函式采用int *,因此您需要取消參考指標以操作參考的物件。因此,您可能打算增加*p然后進行遞回呼叫:
*p;
g(n,k-1,p);
為了解決編譯錯誤,您可能打算分配1給int物件并進行遞回呼叫。
if(k%n==0) {
*p = 1;
g(n,k-1,p);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/402624.html
標籤:
