1、求n的阶乘。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
//
// 练习3:求n的阶乘(不考虑溢出)
//
//方法1
//int main()
//{
// int num = 0;
// int sum = 1;
// scanf("%d", &num);
// //循环是一种迭代!
// for (int i = 1; i <= num; i++)
// {
// sum = sum * i;
// }
// printf("%d", sum);
// return 0;
//}
////方法2:自己琢磨的
//int fac(int x)
//{
// if (x > 1)
// {
// x=x*fac(x - 1);
// }
// return x;
//}
//int main()
//{
// int num = 0;
// scanf("%d", &num);
// printf("%d", fac(num));
// return 0;
//}
//方法3:老师的方法更省略
int fac(int x)
{
if (x > 1)
{
return x * fac(x - 1);
}
}
int main()
{
int num = 0;
scanf("%d", &num);
printf("%d", fac(num));
return 0;
}
2、求第n个斐波那契数
//1 1 2 3 5 8 13 21 34
//n=(n-1)+(n-2)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<Windows.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
//练习4:求第n个斐波那契数
//1 1 2 3 5 8 13 21 34
//n=(n-1)+(n-2)
//方法1:
//int fbnq(int n)
//计算第三个斐波那契数时相当于函数调用2的2次方次
//当计算第40个时相当于调用函数2的39次方次,此算法就不是很合理了。
//{
// printf("%d ", n);
// if (n < 3)
// {
//
// return 1;
//
// }
// else
//
// return fbnq(n - 1) + fbnq(n - 2);
//}
//int main()
//{
// int n = 0;
// scanf("%d", &n);
// int n_sum=fbnq(n);
// printf("%d\n", n_sum);
// return 0;
//}
//方法2:
int fbnq(int n)
{
int a = 1;
int b = 1;
int ret = 1;
while (n > 2)
{
ret = a + b;
a = b;
b = ret;
n--;
}
return ret;
}
int main()
{
int n = 0;
scanf("%d", &n);
int n_sum=fbnq(n);
printf("%d\n", n_sum);
return 0;
}