0
点赞
收藏
分享

微信扫一扫

C studing NO.21 函数的迭代

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;
}

举报

相关推荐

0 条评论