average_angela Ответов: 3

Программа на языке Си, сочетающая массивы и рекурсию


для заданного числа 'n' мы помещаем числа от 1 до n вокруг таблицы и начинаем удалять числа, начинающиеся с 2, Вот так:
============ПРИМЕР===========
n=6
1 2 3 4 5 6 --> мы удаляем 2,4,6
теперь у нас есть: 1 _ 3 _ 5 _
затем, если мы представим их вокруг стола после 6, мы должны удалить 2, но так как он был удален, мы удалим число после 2, которое равно 3. поскольку они находятся вокруг стола после 3, мы должны удалить 1 (число после 5). в конце концов мы добираемся до числа 5 которое и есть ответ

Что я уже пробовал:

я не могу перевести этот процесс в код особенно ту часть которая в конце массива мы должны начать с начала массива особенно рекурсивную функцию

CPallini

Это выглядит как вариант проблемы Иосифа Флавия, см.
https://en.wikipedia.org/wiki/Josephus_problem
Если это явно не требуется, я бы не использовал рекурсию (по крайней мере, мне не кажется, что рекурсия-это естественный подход в такой задаче).

Patrice T

Покажите, что вы сделали.

3 Ответов

Рейтинг:
1

CHill60

Мы не делаем за вас домашнюю работу. Упражнения, такие как домашнее задание, предназначены для закрепления знаний из курса в твой мозг, чтобы помочь ты практикуйте новые навыки и пусть твой репетитор знает, где вам нужна дополнительная помощь.

Дайте ему попробовать. Это не так трудно, как вы думаете. Затем, если вы все еще застряли, вернитесь и опубликуйте свой код, объясните свою проблему, и мы постараемся помочь


Aydin Homay

СОГЛАСЕН

Рейтинг:
0

OriginalGriff

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Get some paper and a pencil, and draw yourself a picture of the table. Add the numbers around it. Now "play the game" and follow the rules. When you get it right, do it again, but this time, draw the table as a string line, and go from the end of the table back to the start. When that works, do it again, but this time write down the rules you are following: what you did when and why. When you have then written down, do it again, but this time, follow just the rules you just wrote down. Does it work? When it does, those rules are basically your code, all you have to do is translate to to actual code. Try it yourself, you may find it is not as difficult as you think!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


Рейтинг:
0

KarstenK

Вам нужно посетить некоторые из них Узнать с учебник чтобы изучить основы. Вы должны узнать о массивах, malloc и free.

Вы должны реализовать некоторую рекурсивную функцию, которая выполняет эту работу. Это может быть с прототипом

int* shortenArray(const int *array, int cnt);