我開始學習c 。所以我想只使用遞回來嘗試這個。謝謝你的幫助。
#include <iostream>
using namespace std;
int lastIndex(int arr[], int size, int num){
size--;
if(size < 0)return -1;
if(arr[size] == num)return size;
return(arr, size, num);
}
int main(){
int arr[11] = {1, 2, 2, 4, 2, 8};
cout << "Last Index = " << lastIndex(arr, 6, 2);
}
uj5u.com熱心網友回復:
我想你的意思是
return lastIndex(arr, size, num);
你的代碼
return(arr, size, num);
相當于
return num;
uj5u.com熱心網友回復:
我為您的代碼修復的內容:
- 使用命名空間標準;不好
- int 對于陣列的索引太小,使用 size_t
- 將陣列作為指標 大小傳遞是不好的,使用 std::span
- 遞回必須按名稱呼叫函式
- C 陣列不好,使用 std::vector 或 std::array
#include <iostream>
#include <array>
#include <span>
size_t lastIndex(std::span<int> span, int num) {
if (span.empty()) return -1;
if (span.back() == num) return span.size();
return lastIndex(span.first(span.size() - 1), num);
}
int main(){
std::array<int, 6> arr = {1, 2, 2, 4, 2, 8};
std::cout << "Last Index = " << lastIndex(arr, 2);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/478711.html
上一篇:C 遞回迷宮求解器無限回圈
