我继续收到Undefined reference to 'powerOfThree'
的错误。 powerOfThree
是我的递归方法,如下所示。这是代码:
#include <stdio.h>
int powerOfThree(int);
int main(void){
int userInput;
printf("PLease enter a number: "); //asking the user to enter a value
scanf("%d", &userInput); //store that value into userInput
printf("the value of %d three to the power is: %d", userInput, powerOfThree(userInput)); //passing the value of userInput into powerOfThree.
int powerOfThree(int n) { //recursion method
if(n<1) {
return 1; //control
}
else {
return (3*powerOfThree(n-1)); //actual calculation
}
}
return (0);
我要求用户输入一个数字并将其存储在
userInput
中。理论上,我可以将该输入传递给递归方法。 最佳答案
海湾合作委员会有时是一种威胁。
它允许您在其他函数(嵌套函数)中定义函数。您(可能是无意间)将powerOfThree()
函数嵌套在main()
中。如果将return 0;
移到powerOfThree()
的开始之前并添加缺少的右括号,则一切将正常进行。
我认为必须先定义嵌套函数,然后才能使用它们。请参见nested functions上的GCC手册-如果您必须在定义前使用auto
进行声明,该手册的确允许使用main()
进行声明。就目前而言,编译器假定您打算调用之前声明的函数的非嵌套版本。我建议不要使用仅GCC功能(嵌套功能)。
#include <stdio.h>
static int powerOfThree(int);
int main(void)
{
int userInput;
printf("Please enter a number: ");
if (scanf("%d", &userInput) == 1 && userInput >= 0)
{
printf("The value of 3 to the power %d is: %d\n",
userInput, powerOfThree(userInput));
}
return (0);
}
static int powerOfThree(int n)
{
if (n < 1)
return 1;
else
return (3 * powerOfThree(n-1));
}
关于c - 未定义对“powerOfThree”的引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52175423/