LINUX.ORG.RU

История изменений

Исправление ziemin, (текущая версия) :

По идее здесь надо рекурсивно работать. Как-то так

long count(long number) {
  long cadd = 0;
  long csub = 0;
  if (number == 0) {
    return 0;
  } else if (number % 2 == 0) {
    return 1 + count(number / 2);
  } else {
    cadd = count(number + 1);
    csub = count(number - 1);
    if (cadd < csub) {
      return 1 + cadd;
    } else {
      return 1 + csub;
    }
  }
}

Некрасиво, зато наглядно. На современных машинах стека должно хватить.

Исправление ziemin, :

По идее здесь надо рекурсивно работать. Как-то так

int count(int number) {
  int cadd = 0;
  int csub = 0;
  if (number == 0) {
    return 0;
  } else if (number % 2 == 0) {
    return 1 + count(number / 2);
  } else {
    cadd = count(number + 1);
    csub = count(number - 1);
    if (cadd < csub) {
      return 1 + cadd;
    } else {
      return 1 + csub;
    }
  }
}

Некрасиво, зато наглядно. На современных машинах стека должно хватить.

Исправление ziemin, :

По идее здесь надо рекурсивно работать. Как-то так

int count(int number) {
  int cadd = 0;
  int csub = 0;
  if (number == 0) {
    return 0;
  } else if (number % 2 == 0) {
    return 1 + count(number / 2);
  { else {
    cadd = count(number + 1);
    csub = count(number - 1);
    if (cadd < csub) {
      return 1 + cadd;
    } else {
      return 1 + csub;
    }
  }
}

Некрасиво, зато наглядно. На современных машинах стека должно хватить.

Исходная версия ziemin, :

По идее здесь надо рекурсивно работать. Как-то так

int count(int number) {
  int cadd = 0;
  int csub = 0;
  if (number == 0) {
    return 0;
  } else if (number % 2) {
    return 1 + count(number / 2);
  { else {
    cadd = count(number + 1);
    csub = count(number - 1);
    if (cadd < csub) {
      return 1 + cadd;
    } else {
      return 1 + csub;
    }
  }
}

Некрасиво, зато наглядно. На современных машинах стека должно хватить.