質問させていただきます。
正の整数a,nを入力し
aのn乗を計算し表示するプログラムを作ろうとしています。
条件は数学関数powを使わないことと関数の再帰呼び出しを使うことです。
x=a*x(a,n-1);の部分で代入文が変ですという旨のエラー(?)が出てしまうのですが
何をいれていいかわかりません、またそこが正しくなれば
正常に動くのかもわかりません…
どうすれば正常に実行できるのか教えていただけたら嬉しいです。
#include<stdio.h>
int x(int a, int n){
if(0==n){
return a*x(a,n-1);
}
else{
return 1;
}
}
main(){
int a,n,fact;
int x(int a, int n);
x=a*x(a,n-1);
printf("a?");
scanf("%d",&a);
printf("n?");
scanf("%d",&n);
printf("%d^%d = %d\n",a,n,x);
}
関数の再帰呼び出しについて
Re:関数の再帰呼び出しについて
訂正してみました。たぶんこれでうまくいくと思います。
#include<stdio.h>
int x(int a, int n){
if(0!=n){ // ==を!=に変えました。 n=0の時、x(m,0)=1 (mは任意)。
return a*x(a,n-1);
}
else{
return 1;
}
}
int main(){
int a,n,fact;
int x(int a, int n);
//x=a*x(a,n-1); 不要です。
printf("a?");
scanf("%d",&a);
printf("n?");
scanf("%d",&n);
fact=x(a,n); //ここでaのn乗を計算します。
printf("%d^%d = %d\n",a,n,fact); // xをfactに変えました。
}
#include<stdio.h>
int x(int a, int n){
if(0!=n){ // ==を!=に変えました。 n=0の時、x(m,0)=1 (mは任意)。
return a*x(a,n-1);
}
else{
return 1;
}
}
int main(){
int a,n,fact;
int x(int a, int n);
//x=a*x(a,n-1); 不要です。
printf("a?");
scanf("%d",&a);
printf("n?");
scanf("%d",&n);
fact=x(a,n); //ここでaのn乗を計算します。
printf("%d^%d = %d\n",a,n,fact); // xをfactに変えました。
}