目录
一.斐波那契数列
法一:
迭代法
int fib(int n)
{
int a = 1;
int b = 1;
int c = 0;
if (n <= 2)
return 1;
else
while (n>2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", fib(n));
return 0;
}
法二:
递归法
#include <stdio.h>
int fib(int n)
{
if (n <= 2)
return 1;
else
return fib(n - 1) + fib(n - 2);
}
int main()
{
int n;
scanf("%d", &n);
printf("%d", fib(n));
return 0;
}
二.递归实现n的k次方
#include <stdio.h>
int fib(int n, int k)
{
if (k == 1)
return n;
else
return n*fib(n, k - 1);
}
int main()
{
int n;
int k;
scanf("%d%d", &n,&k);
printf("%d", fib(n, k));
return 0;
}
三.计算一个数的每位之和(递归实现)
#include <stdio.h>
int DigitSum(int n)
{
if (n <= 9)
return n;
else
return n % 10 + DigitSum(n / 10);
}
int main()
{
int n;
//int k;
scanf("%d", &n);
printf("%d", DigitSum(n));
return 0;
}
四.实现求n的阶乘(不考虑溢出的问题)
法一:
递归法
#include <stdio.h>
int fun(int n)
{
if (n == 0 || n == 1)
return 1;
else
return n * fun(n - 1);
}
int main()
{
int n;
//int k;
scanf("%d", &n);
printf("%d", fun(n));
return 0;
}
法二:
非递归
#include <stdio.h>
int fun(int n)
{
int c = 1;
if (n == 0 || n == 1)
return 1;
while (n)
{
c *= n;
n--;
}
return c;
}
int main()
{
int n;
//int k;
scanf("%d", &n);
printf("%d", fun(n));
return 0;
}
五.实现打印一个整数的每一位
void print(int n)
{
if (n > 9)
print(n / 10);
printf("%d ", n % 10);
}
int main()
{
int n;
//int k;
scanf("%d", &n);
print(n);
return 0;
}
小结:
欢迎评论谈谈你的看法!