在現實生活中,我估計這個問題沒有多大的意義, 但作為你一種方法,可以借鑒,也可以得出一個結論,那就是盡量把數學知識應用於編程之中,算法會完美。 /*********************************************************************************************************************************** 1: 問題描述:給定包含101個元素的數組arr,數組中元素一定屬於[1,100],並且[1,100]之間的每個數都在arr中出現過。 2: 解決方案:分析,數組中有101個元素,如果[1,100]之間的每個數出現一次,那就是100個元素了,剩下的那個元素就是唯一的重復出現的元素。 我們可以通過遍歷arr,得到arr中所有元素的總和,然後既然[1,100]之間的每個數出現一次,那麼我們減去1+2+……+99+100的和, 結果就是我們需要的唯一的重復出現的元素了。時間復雜度是O(n)。 *************************************************************************************************************************************/
//數組元素遞歸求和
int sum(int a[], int length)
{
int result = 0;
if (length == 1)
{
result = a[0];
}
else
{
result = sum(a, length - 1) + a[length - 1];
}
return result;
}
//利用等差數列求出1---100的和,然後相減就可以了。
int getrepeated(int a[])
{
int temp1 = (1 + 100) * 100 /2;
int temp2 = sum(a, 101);
return temp2 - temp1;
}