Подсчитайте количество элементов, которые увеличиваются или уменьшаются в 10 раз при рекурсии

#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.