#include<stdio.h>int fib(int n)
{
if(n < 3) return1;
return fib(n-1) + fib(n-2);
}
int main(){
int n = 0;
printf("Please input a number: ");
scanf("%d", &n);
printf("%d\n", fib(n));
return0;
}
非递归
#include<stdio.h>int fib(int n)
{
int a = 1;
int b = 1;
int c = 2;
int count = 0;
if(n > 2)
{
while( count < n-2)
{
c = a + b;
a = b;
b = c;
count++;
}
return c;
}
return1;
}
int main(){
int n = 0;
printf("Please input a number: ");
scanf("%d", &n);
printf("%d\n", fib(n));
return0;
}
2. 编写一个函数实现n^k,使用递归实现
#include<stdio.h>int my_power(int n, int k)
{
if(k == 0) return1;
if(k == 1) return n;
return (n * my_power(n, k-1));
}
int main(){
int n = 0, k = 0;
printf("Please input the values of n and k: ");
scanf("%d%d", &n, &k);
printf("The value of n^k is %d\n", my_power(n, k));
return0;
}
#include<stdio.h>int my_factorial(int n)
{
if(n == 1) return1;
return n * my_factorial(n-1);
}
int main(){
int n;
scanf("%d", &n);
printf("%d",my_factorial(n));
return0;
}
非递归
#include<stdio.h> int my_factorial(int n)
{
int i = 1;
int result = 1;
while(i<=n)
{
result *= i;
i++;
}
return result;S
}
int main(){
int n;
scanf("%d", &n);
printf("%d",my_factorial(n));
return0;
}
7. 递归方式实现打印一个整数的每一位
#include<stdio.h>
void my_printf(int n)
{
if(n<10)
{
printf("%d ", n);
return;
}
my_printf(n/10);
printf("%d ", n%10);
}
int main(){
int n = 0;
printf("Please input a number for n: ");
scanf("%d", &n);
my_printf(n);
return0;
}