0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
1

Рекурсивная функция находящая натуральные числа равные сумме кубов своих цифр

09.12.2018, 13:58. Показов 2862. Ответов 11

Сделал решение задачи, но без рекурсии. Не могу понять, как её сюда присобачить.
Задача: Найти все натуральные числа, не превосходящие заданного N и равные сумме кубов своих цифр. Используйте рекурсивную функцию.
Мой код с решением без рекурсии:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main()
{
 
    int N;
    cout << "Enter num:";
    cin >> N;
    for (int i = 1; i<N; i++)
    {
        int t = i, sum = 0;
        while (t>9)
        {
            int z = t % 10;
            t = t / 10;
            sum += z*z*z;
        }
        sum += t*t*t;
        if (sum == i) cout << i << " ";
    }
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.12.2018, 13:58
Ответы с готовыми решениями:

Найти все натуральные числа от 1 до 2000, равные сумме кубов своих цифр.
Задача 30 Найти все натуральные числа от 1 до 2000, равные сумме кубов своих цифр. Задача 31...

Найти все натуральные числа, не превосходящие заданного N и равные сумме кубов своих цифр.
Найти все натуральные числа, не превосходящие заданного N и равные сумме кубов своих цифр. Смог...

Найти все натуральные числа, не превосходящие заданного N и равные сумме кубов своих цифр.
Найти все натуральные числа, не превосходящие заданного N и равные сумме кубов своих цифр. ...

Существуют натуральные числа равные сумме кубов своих цифр. Найдите такие числа в заданном интервале
Существуют натуральные числа равные сумме кубов своих цифр ,например 370 ,33+73+03=370. Найдите...

11
Диссидент
Эксперт C
26973 / 16847 / 3706
Регистрация: 24.12.2010
Сообщений: 37,826
09.12.2018, 14:50 2
Лучший ответ Сообщение было отмечено else aaa как решение

Решение

else aaa, строки 15-21 лучше бы записать так
C++
1
2
3
4
5
6
while (t>0)
        {
            int z = t % 10;
            t = t / 10;
            sum += z*z*z;
        }
без лишней sum++
Но не суть. Вообще-то любой цикл можно записать через рекурсию.
C++
1
2
3
4
5
6
int s3(int x)  // вычисление суммы кубов цифр
{
   if (x==0) return 0;
   int z = x%10;
   return z*z*z + s3(x/10);
}
1
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
09.12.2018, 15:14  [ТС] 3
Байт,
строки 15-21 лучше бы записать так
Да, излишне усложнил я.
Вообще-то любой цикл можно записать через рекурсию.
Рекурсия тяжело доходит. Ещё одна прога такая же есть, пытаюсь понять теперь, как записать.
Но в общем вот окончательный код, я вывод прямо в функции сделал, нас так учат.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int s3(int x)  // вычисление суммы кубов цифр
{
    if (x == 0) return 0;
    int z = x % 10;
    cout << z*z*z + s3(x / 10)<<" ";
    return 0;
}
 
int main()
{
 
    int N;
    cout << "Enter num:";
    cin >> N;
    s3(N);
    system("pause");
    return 0;
}
0
Диссидент
Эксперт C
26973 / 16847 / 3706
Регистрация: 24.12.2010
Сообщений: 37,826
09.12.2018, 16:31 4
Цитата Сообщение от else aaa Посмотреть сообщение
я вывод прямо в функции сделал, нас так учат.
Странно как-то вас учат... Может, потому и рекурсия не сразу доходит...
0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
09.12.2018, 16:39  [ТС] 5
Байт, Основной препод заболел, и теперь его зам нас учит, это какой-то ад просто. Я там ещё одну тему создал, не могли бы Вы помочь, пожалуйста.
0
Yetty
09.12.2018, 17:40
  #6

Не по теме:

Цитата Сообщение от else aaa Посмотреть сообщение
Но в общем вот окончательный код
ничего что он не работает ?

0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
09.12.2018, 18:21  [ТС] 7
Yetty, Что не так? Не правильно считает?

Добавлено через 12 минут
А, ну да, не работает.
0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
10.12.2018, 08:35  [ТС] 8
Байт, Прошлая программа была рабочая, видимо что-то пошло не так при переводе кода. Может, сыграло свою роль упрощение строк 15-21?
0
Диссидент
Эксперт C
26973 / 16847 / 3706
Регистрация: 24.12.2010
Сообщений: 37,826
10.12.2018, 12:00 9
else aaa, про твой код из поста 3 с 10-й строчкой ничего сказать не могу.
Кроме того, код поста 3 решает совсем другую задачу, чем код поста 1. И все сравнения совершенно бессмыслены.
0
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
10.12.2018, 12:36  [ТС] 10
Байт, Аааа, сложна Так функция полностью замещает мой алгоритм или нет? или мне надо правильно return настроить?
0
Диссидент
Эксперт C
26973 / 16847 / 3706
Регистрация: 24.12.2010
Сообщений: 37,826
10.12.2018, 12:49 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int s3(int x)  // вычисление суммы кубов цифр
{
   if (x==0) return 0;
   int z = x%10;
   return z*z*z + s3(x/10);
}
 
int main()
{
    int N;
    cout << "Enter num:";
    cin >> N;
    for (int i = 1; i<N; i++)
    {
        if (s3(i)==i)
           cout << i << " ";
    }
    system("pause");
    return 0;
}
вот это должно быть эквивалентом твоего кода из поста 1.
1
0 / 0 / 0
Регистрация: 20.09.2018
Сообщений: 70
10.12.2018, 12:57  [ТС] 12
Байт, Ё, вот я балбаес. Похоже, пора идти спать. Спасибо огромное.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2018, 12:57
Помогаю со студенческими работами здесь

Найдите трехзначные числа, равные сумме кубов своих цифр
Найдите трехзначные числа, равные сумме кубов своих цифр.

Найти все трехзначные числа, равные сумме кубов своих цифр
найти все трехзначные числа равные сумме кубов своих цифр

Найти трехзначные числа от 100 до n, равные сумме кубов своих цифр
Найти трехзначные числа от 100 до n, равные сумме кубов своих цифр. (написать три программы с...

все трехзначные числа, равные сумме квадратов своих цифр
необходимо вывести все трехзначные числа, равные сумме квадратов своих цифр вот мой код, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru