Bonjour,
En fait voila, j'ai envie de créer un petit algo en C qui calculerait le carré d'un nombre. Bien sûr tout ceci est assez simple, je peux faire ça par exemple.
Mais j'ai voulu compliqué un peu les choses. Sachant qu'une multiplication peut être considérée comme une suite d'addition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int carre(int n){ return n*n; }
Par exemple: 7*7=49 équivaut à 7+7+7+7+7+7+7=49. Pourquoi ne pas reproduire le même procédé pour le carré d'un nombre ainsi:
7²=7+7+7+7+7+7+7=49, n'est-ce pas? Pour faire cet algo, j'ai décidé d'utiliser le principe de la récursivité. Alors oui je sais pour ce type de problème la récusivité est plutôt déconseillée, mais j'ai décidé de le faire uniquement pour faire travailler ma cervelle et rien d'autres.
J'ai donc ceci:
Cette fonction fonctionne relativement bien pour tant quand je compile avec l'option -Wall j'ai un warining du type:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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<stdio.h> int carre2(int n){ carre2bis(n,n); return 0; } int carre2bis(int n,int m){ if(n==1){ return 0; } return m + carre2(n-1); } int main(void){ printf("%d\n",carre2(8)); return 0; }
carre.c: Dans la fonction «carre2» :
carre.c:16: attention : déclaration implicite de la fonction « «carre2bis» »
Comment faire pour ne plus avoir cette érreur? Un define?
Je vous remercie d'avance pour vos réponses.
Partager