#c #recursion
#c #рекурсия
Вопрос:
#include <iostream>
using namespace std;
int factorsOf10(int arr[], int value)
{
int count = 0;
int len = sizeof(arr) / sizeof(0);
for (int i = 0; i < len; i )
{
for (int j = 0; j < len; j )
{
if (arr[i] * 10 = arr[j])
count ;
else
return(arr[] 1, value);
}
}
}
int main()
{
int arr[] = { 1,10,20 };
int result = factorsOf10(arr, 0);
cout << resu<
return 0;
}
Это то, что я делал до сих пор, но все пошло не так. Кто-нибудь может дать мне какую-нибудь идею, пожалуйста?
Мне нужно рекурсивно вычислить количество последовательных элементов, которые увеличиваются или уменьшаются в 10 раз.
Например:
factorsOf10([1, 10, 20], 0) → 1
factorsOf10([100, 10, 20, 200], 0) → 2
factorsOf10([1000, 100, 10, 1, 10], 0) → 4
factorsOf10([10, 20, 33, 340], 0) → 0
Комментарии:
1.
sizeof(arr) / sizeof(0)
делает не то, что вы думаете.2. Я просто хочу сначала найти размер массива, используя его.
3. Массивы вырождаются в указатели при вызовах функций. Следствием этого является потеря длины массива. Вам нужно передать дополнительный параметр вашей функции
factorsOf10
, чтобы явно указать ей длину массива.4. Или еще лучше: удалите наследие из C все вместе и используйте
std::vector
вместо этого.sizeof(arr) / sizeof(0)
будет константой времени компиляции, потомуarr
что на самом деле это указатель, а не массив.5. Ha! Я даже не заметил, что это C , а не C.