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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
int
carre(int n){
 
  return n*n;
}
Mais j'ai voulu compliqué un peu les choses. Sachant qu'une multiplication peut être considérée comme une suite d'addition.
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:
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;
}
Cette fonction fonctionne relativement bien pour tant quand je compile avec l'option -Wall j'ai un warining du type:

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.