所以,這里是我的代碼:
int *recursDelete(int arr[], int n, int pos, int i){
if(i<n){
arr[pos-1]=arr[i 1] 。
recursDelete(arr, n, pos 1, i )。
}
return arr。
}
我試圖從給定的位置向左復制每個元素,然后只回傳陣列。我不明白哪里出了問題。我還想把引數中的i去掉,但是如果我這樣做并把i=0放在函式里面,那么i就會永遠是0。
uj5u.com熱心網友回復:
做了:
#include <stdio.h>/span>
int *recursDelete(int arr[] 。int n, int poz)。
int main()
{
int arr[]={1,2,3,4, 5};
int *p= recursDelete(arr, 5, 3, 0)。
for(int i=0; i<=3; i ){
printf("%d"/span>, *p)。
p ;
}
return 0;
}
int *recursDelete(int arr[] 。int n, int poz){
if(n! =0){
arr[poz-1]=arr[poz]。
n--
recursDelete(arr, n, poz 1)。
}
else{
return arr;
}
謝謝大家的提示!
uj5u.com熱心網友回復:
你需要處理邊緣情況。像這樣的東西應該可以作業:
void deleteElement(int* ar, int pos, int cur, int maxLen)
{
if (cur < maxLen)
{
if ( cur == maxLen - 1 )
{
ar[cur] = 0; /span> last
return;
}
else if ( cur > pos - 1 )
{
ar[cur] = ar[cur 1]。
}
deleteElement(ar, pos, cur, maxLen)。
}
}
int main()
{
int ar[5] = { 1, 2,3,4,5 }。
int cur = 0;
deleteElement(ar, 0, cur, 5) 。
for (int i = 0; i < 5; i)
printf("="/span>, ar[i])。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326648.html
標籤:
