遞歸C函數int sum(int * x,int n)它返回數組中元素個數 在二進制文字中有多於兩個1.(例如:具有多於兩個1的二進制元素是:111001,11011 ...)遞歸函數int sum(int * x,int n)?
我有這個功能的問題。我試過了:
int sum(int *x,int n)
{
if(n==1)return *x;
else
return (x[n-1]+sum(x+1,n-1));
}
但這個功能不起作用....任何人都可以幫我嗎?
遞歸C函數int sum(int * x,int n)它返回數組中元素個數 在二進制文字中有多於兩個1.(例如:具有多於兩個1的二進制元素是:111001,11011 ...)遞歸函數int sum(int * x,int n)?
我有這個功能的問題。我試過了:
int sum(int *x,int n)
{
if(n==1)return *x;
else
return (x[n-1]+sum(x+1,n-1));
}
但這個功能不起作用....任何人都可以幫我嗎?
遞歸步驟是錯誤的。它應該是:
return x[0] + sum(x + 1, n - 1);
它遞增最後一個元素,同時遞歸地沿着數組步進。最後所有錯誤,它應該加上第一個,即數組的「頭」(如果看作一個列表)。
根據你描述你正在使用錯誤的邏輯
遞歸C函數INT總和(INT * X,INT n)的返回數組的元素的數目 ,其在二進制碑文具有兩個以上的1
int NumberOfSetBits(int i)
{
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}
int sum(int *x,int n)
{
static int count = 0;
if(NumberOfSetBits(*x) > 2)
count++;
if(n==1)
return count;
else
return sum(x+1,n-1);
}
不,它看起來像他的函數(試圖)總和數組'x []'的所有元素。 –
爲什麼這必須是遞歸的? –
問題不明確。 – Sadique
當然,它不起作用,你不檢查數組元素的二進制表示。 – StoryTeller