似乎只有 2 个大小为 6 的输入有问题。其他一切似乎都按预期工作。为什么会这样
There seems to be a problem with input of only 2 with a size of 6. Everything else seems to work exactly as expected. Why is this happening
我开始学习c++了。所以我想尝试一下,只使用 recursion.Thank 你的帮助。
#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);
}
我想你是说
return lastIndex(arr, size, num);
你的代码
return(arr, size, num);
相当于
return num;
我为您的代码修复的问题:
- using namespace std; is bad
- 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);
}
我开始学习c++了。所以我想尝试一下,只使用 recursion.Thank 你的帮助。
#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);
}
我想你是说
return lastIndex(arr, size, num);
你的代码
return(arr, size, num);
相当于
return num;
我为您的代码修复的问题:
- using namespace std; is bad
- 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);
}