Commençont par un exemple simple.

La suite de fibonacci est assez simple est connue pour faire l'objet d'un exemple. La fonction suivante renvoie le n-ième terme de cette suite. chacun étant la somme des deux précédents.

int fib(int n){
	if(n <= 2){ /* permet la terminaison de la fonction*/
		return 1;
	}
	else {
		return fib(n - 1) + fib(n - 2);
	}
}

Cependant, cette fonction présente de gros problèmes. De lisibilitée en particulier. Premièrement les accolades sont génantes.

int fib(int n){
	if(n <= 2) /* permet la terminaison de la fonction*/
		return 1;
	else
		return fib(n - 1) + fib(n - 2);
}

Secondement, la clause 'else' ne sert à rien, on peut donc la retirer.

int fib(int n){
	if(n <= 2) /* permet la terminaison de la fonction*/
		return 1;
	return fib(n - 1) + fib(n - 2);
}

Ensuite les commentaire obfusquent le code, lui retirant de sa puretée. Pour des commentaire qui, qui plus est, sont triviaux.

int fib(int n){
	if(n <= 2) return 1;
	return fib(n - 1) + fib(n - 2);
}

De plus le C étant un vieux language, l'inférence de type existe dans sa vraie forme. Par défault, tout est un 'int'. Cette option rajoutera à la compilation le besoin du drapeau '-std=c89' pour dire qu'on sait coder en C.

fib(n){
	if(n <= 2) return 1;
	return fib(n - 1) + fib(n - 2);
}

En réfléchissant un peu à la logique du code, on peut utiliser l'opérateur ternaire en place du 'if'. Ce qui permet d'atteindre ce code:

fib(n){
	return (n <= 2)? 1 : fib(n - 1) + fib(n - 2);
}

Ce code illustre plusieurs fonctionnalitée du C: