No, funkce otrok není zrovna dobrá jako příklad rozděl a panuj. Funkce, které zadám číslo a ona mi vrátí přesně to samé číslo. To je spíš metoda rozděl a panuj podle státní správy - když už není co dělit, tak se nějaká nová funkce vymyslí i když nic nedělá.
Doporučuji jednu věc, kterou "staří" programátoři ovládají poměrně dobře. Je to Desk Checking. Vemte si tužku, papír, a zkuste si ten program spustit "ručně". Prostě si ho odkrokujte tužkou na papír. Poměrně záhy tak objevíte zbytečnost funkce otrok a i vám bude jasné, proč výpis začíná nejvyšším číslem a klesá.
Programování není žádná alchymie. Obzvláště v C ne. Co v něm ale nefunguje je metoda pokus a omyl. Přepisovat + na -, vyměňovat for za while atd., tím se nikam nedostanete. V první řadě musíte pochopit, co vlastně chcete udělat. Pokud chcete vypsat čásla od 1 do N, tak vám musí být jasné, že začínáte u 1 a jdete nahodu. Začít na N a jít dolu těžko může produkovat požadovaný výsledek. I když i na to jsou triky, stačí vypsat zadanou hodnotu minus počitadlo, nebo to psát do pomocného řetězce zprava doleva.
A na závěr se přidávám k jednomu z diskutujících - zadaná úloha je natolik triviální, že na ni rozděl a panuj nelze efektivně použít. Tam prostě není co "delegovat", protože je tam výpočet jediný. Pomohlo by změnit trochu zadání - třebas aby se výpis prováděl rekurzivně.