您的位置:首页 > 文旅 > 旅游 > C语言程序设计(初识C语言后部分)

C语言程序设计(初识C语言后部分)

2024/10/7 4:24:59 来源:https://blog.csdn.net/2402_85207276/article/details/141333288  浏览:    关键词:C语言程序设计(初识C语言后部分)

代码是一门艺术,键盘是我的画笔。

3.递归和迭代(循环就是一种迭代,迭代不仅仅是循环)

·求n!

递归方式:

n!---> 1 (n=1);   n*(n-1)! (n>=1)

#include <stdio.h>
//n!-->递归方式
int fac(int n)
{if (n <= 1)return 1;elsereturn n * fac(n - 1);
}
int main()
{int n = 0;scanf("%d", &n);int ret = fac(n);printf("ret=%d\n", ret);return 0;
}

迭代方式(非递归):

#include <stdio.h>
//n!-->迭代方式
int fac(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 = fac(n);printf("ret=%d\n", ret);return 0;
}

·求第n个斐波那契数(不考虑溢出)

斐波那契数列:1  1  2  3  5  8  13  21  34  55  ……

即等于前两个数之和

递归方式(但是效率很低,数字越大运算时间越长):

Fib(n)(斐波那契数)---> 1 (n<=2);   Fib(n-1)+Fib(n-2) (n>2)

#include <stdio.h>
//递归方式
int Fib(int n)
{if (n <= 2)return 1;elsereturn Fib(n - 1) + Fib(n - 2);
}
int main()
{int n = 0;scanf("%d", &n);int ret = Fib(n);printf("%d\n", ret);return 0;
}

迭代方式:

#include <stdio.h>
//迭代方式
int Fib(int n)
{int a = 1;int b = 1;int c = 0;while (n >= 3){c = a + b;a = b;b = c;n--;}return c;
}
int main()
{int n = 0;scanf("%d", &n);int ret = Fib(n);printf("%d\n", ret);return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com