Переделать рекурсию так, чтобы был счетчик и использовался тип static - C (СИ)
Формулировка задачи:
Есть рекурсия, было сказано ее переделать так, чтобы был счетчик и использовать тип static. Не понимаю что от меня хотят, могу переделать чтобы оно там формально присутствовало, но смысл этого преобразования от меня ускользает. Что это дает и как это сделать так, чтобы смысл не потерялся?
Вот это то, что у меня уже написано.
h=(double)(b-a)/n; res=0; for (int i=1; i<=n; i++;) res=res+func(i); res=res*h;
double func(double a, double h, int i)
{
double vl;
vl=(double)(a+(i-0,5)h)/((1+(a+(i-0,5)h))*(1+(a+(i-0,5)h)));
return vl;
}Решение задачи: «Переделать рекурсию так, чтобы был счетчик и использовался тип static»
textual
Листинг программы
/*Описать рекурсивную функцию count_digits(s) целого типа, находящую количество цифр в строке S без
использования оператора цикла. С помощью этой функции найти количество цифр в данных пяти строках.
*/
int count_digits(char* s){
static int count=0;
if (isdigit(*s)) count++;
if (*s=='\0') return count;
return count_digits(++s);
}
Объяснение кода листинга программы
- Переменная
countинициализируется значением 0. - Функция проверяет, является ли первый символ строки
sцифрой. Если да, то значение переменнойcountувеличивается на 1. - Если первый символ строки
sравен нулю (что означает, что мы достигли конца строки), то функция возвращает значение переменнойcount. - В противном случае, функция вызывает саму себя, передавая в качестве аргумента адрес следующего символа в строке
s(что достигается путем увеличения указателяsна 1).