int feib(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return (feib(n - 1) + feib(n - 2));
}
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d", feib(n));
return 0;
}
2.非递归实现:
int feib(int n)
{
int i = 0;
int a = 1, b = 1;
if (n <= 2)
{
return 1;
}
else
{
for (i=0;i<n-2;i++)
{
int tmp = a + b;
a = b;
b = tmp;
}
return b;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d", feib(n));
return 0;
}
二.n 的 k 次方
1.递归实现:
float pow(int n,int k)
{
if (k == 1)
{
return n;
}
else if (k > 1)
{
return n * pow(n, k - 1);
}
else
{
return 1 / (n * pow(n, k - 1));
}
}
int main()
{
int n = 0,k = 0;
scanf("%d %d", &n,&k);
printf("%.2f", pow(n,k));
}
2.非递归实现:
float pow(int n,int k)
{
if (k == 1)
{
return n;
}
else if (k > 1)
{
int i = 0;
int sum = 1;
for (i = 0; i < k; i++)
{
sum *= n;
}
return sum;
}
else
{
int i = 0;
int sum = 1;
for (i = 0; i < k; i++)
{
sum *= n;
}
return 1/sum;
}
}
int main()
{
int n = 0,k = 0;
scanf("%d %d", &n,&k);
printf("%.2f", pow(n,k));
}
三.递归打印一个数的每一位
void print(int n)
{
if (n >9)
{
print(n / 10);
printf("%d ", n % 10);
}
else
{
printf("%d ", n);
}
}
int main()
{
int n = 0;
scanf("%d", &n);
print(n);
return 0;
}
四.计算一个数的每位之和(递归实现)
DigitSum(int n)
{
if (n % 10 != 0)
{
return (n % 10 + DigitSum(n / 10));
}
else
{
return 0;
}
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d",DigitSum(n));
return 0;
}