από giannosfor » 19 Φεβ 2012, 23:24
pc_magas έγραψε:Αναδρομή είναι όταν μια συνάρτηση καλεί τον εαυτό της.
Γνωρίζω τι είναι αναδρομή γι'αυτό σε ρώτησα.
Αυτό είναι σε C και χρησιμοποιεί αναδρομή,το είχα φτιάξει σε ένα thread πριν καιρό,
για να ελέγχει αν οι λέξεις είναι αντεστραμμένες.
- Κώδικας: Επιλογή όλων
#define bool int
#define TRUE 1
#define FALSE 0
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int compare(char *s,char *st,int i)
{
if ( i > -1 )
{
if ( *s != *st)
return FALSE;
return compare(++s,--st,--i);
}
return TRUE;
}
void check_arg(char *arg[] )
{
if (arg[1] == NULL)
{
printf("Δέν έχει δωθεί όρισμα.\n");
exit(EXIT_FAILURE);
}
if (arg[2] == NULL)
{
printf("Δέν έχει δωθεί δεύτερο όρισμα.\n");
exit(EXIT_FAILURE);
}
if ( strlen(arg[1]) != strlen(arg[2]) )
{
printf("Οι λέξεις δέν έχουν το ίδιο μήκος.\n");
exit(EXIT_FAILURE);
}
}
int main(int argc, char *argv[])
{
int len;
bool cmp;
check_arg(argv);
len = strlen(argv[1]) -1;
cmp = compare( argv[1], argv[2] + len, len);
if ( cmp )
printf("Οι λέξεις είναι αντιστραμένες.\n");
else
printf("Δέν είναι αντιστραμένες.\n");
exit(EXIT_SUCCESS);
}
Καν'το όπως νομίζεις εσύ ξέρεις.
Αντικειμενοστρέφεια είναι ο βοηθός σου.
1 Γνώσεις Linux: Καθόλου ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 12.04 precise 3.2.0-58-generic 32bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.2.0-57-generic, Microsoft Windows XP Professional
3 Intel Core2 Duo CPU E4600 2.40GHz ‖ RAM 2012 MiB ‖ ASUS INC. P5Q - � P5Q
4 nVidia G94 [GeForce 9600 GT] [10de:0622] {nvidia}
5 eth0: Qualcomm Atheros AR8121/AR8113/AR8114 Gigabit or Fast Ethernet [1969:1026] (rev b0) ⋮ wlan0: 148f:3070 Ralink Technology, Corp. RT2870/RT3070 Wireless Adapter