int main() {
int num;
printf("Enter a number\n");
scanf(" %d", &num);
num = prime(num);
if (num == 0)
printf("This is not a prime number");
if (num == 1)
printf("This is a prime number");
}
prime(int num) {
static i = 2;
if (num % i == 0)
return 0;
prime(i + 1);
return 1;
}
一部のコンパイラでは動作しません。この再帰の例は正しいですか?
私はそれを再帰と呼ぶことができるかどうか知りたい。
具体的には、prime(i + 1)
のような素数関数を再帰的に呼び出すかどうか混乱します。
もちろん、それはなぜでしょうか? –
はい、そうです。関数が直接的または間接的に自身を呼び出すとき、それは定義によって再帰的です。つまり、@ UnholySheepが指摘するように、この関数は無意味です。それはまだ再帰的です。 –
なぜ「プライム」の戻り値の型を指定しなかったのですか?なぜあなたはあなたの "再帰的な"呼び出しで戻り値を使用していないのですか? – UnholySheep