#include<stdio.h>
int func(int n)
{
int a = 1;
int b = 1;
int c = 1;
while (n > 2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = func(n);
printf("%d\n", ret);
return 0;
}
(2)递归方法
int func(int n)
{
if (n <= 2)
return 1;
int a = func(n - 1) + func(n - 2);
return a;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = func(n);
printf("%d\n", ret);
return 0;
}
编写一个函数实现n的k次方,使用递归实现。
int pow(int a, int k)
{
int c = 1;
if (k >= 1)
{
c = a * pow(a, k-1);
}
else { return 1; }
return c;
}
int main()
{
int a = 0;
int k = 0;
scanf("%d %d", &a, &k);
int ret = pow(a, k);
printf("%d\n", ret);
return 0;
}
int pow(int a, int k)
{
int c = 1;
if (k >= 1)
{
c = a * pow(a, k-1);
}
else { return 1; }
return c;
}
int main()
{
int a = 0;
int k = 0;
scanf("%d %d", &a, &k);
int ret = pow(a, k);
printf("%d\n", ret);
return 0;
}
递归和非递归分别实现求n的阶乘(不考虑溢出的问题)
(1)递归方法
//int func(int n)
//{
// if (n > 1)
// return n * func(n - 1);
// return n;
//}
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// int ret = func(n);
// printf("%d\n", ret);
// return 0;
//}
(2)非递归方法
int Fact(int n)
{
int i = 0;
int ret = 1;
for (i = 1; i <= n; i++)
{
ret *= i;
}
return ret;
}
int main()
{
int n = 0;
scanf("%d", &n);
int ret = Fact(n);
printf("%d\n", ret);
return 0;
}
递归方式实现打印一个整数的每一位
void func(int n)
{
if (n > 9)
func(n / 10);
printf("%d ", n % 10);
}
int main()
{
int a = 0;
scanf("%d", &a);
func(a);
return 0;