首页 > 编程语言 >C语言程序设计(初识C语言后部分)

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

时间:2024-08-19 20:25:55浏览次数:8  
标签:方式 迭代 递归 int C语言 Fib 初识 程序设计 include

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

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

·求n!

递归方式:

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

#include <stdio.h>
//n!-->递归方式
int fac(int n)
{
	if (n <= 1)
		return 1;
	else
		return 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;
	else
		return 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;
}

标签:方式,迭代,递归,int,C语言,Fib,初识,程序设计,include
From: https://blog.csdn.net/2402_85207276/article/details/141333288

相关文章

  • C语言:if&switch分支语句
    目录前言一、if语句1.1if1.2else1.3嵌套if1.4悬空else问题二、switch语句2.1 if语句和switch语句的对比2.2 switch语句中的default前言   C语⾔是结构化的程序设计语言,这里的结构指的是顺序结构、选择结构、循环结构,C语言是能够实现这三种结构的,其实我......
  • 内存(动态开辟)———C语言
    内存管理: 1.C语言运行时的内存分配2.static关键字1.修饰变量局部变量:        <1>在编译的过程中,会在数据区为该变量开辟空间,如果代码中未对其进行初始化,则系统默认初始化为0。        <2>用static修饰的局部变量,会延长局部变量的生命周期#include<s......
  • 排序算法 基数排序 RadixSort --C语言实现
    基数排序基数排序(radixsort)属于“分配式排序”(distributionsort),又称“桶子法”(bucketsort)或binsort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O(nlog(r)m),其中r为所采取的基数,而m为堆数......
  • C语言--循环链表
    循环链表实现循环链表的最后一个节点指向头节点,形成一个环。#include<stdio.h>#include<stdlib.h>typedefstructNode{  intdata;  structNode*next;//指向下一个节点}Node;typedefstruct{  Node*head;//头指针}CircularLinkedList;......
  • 初识C语言——练习
    1.求两个数的较大值。   例:输入10、20,输出较大值20。//求两个数的较大值#include<stdio.h>intmain(){ inta=10; intb=20; intc=a>b?a:b; printf("%d\n",c); return0;}2.一个数是否能被5整除问题。  例:输入10,输出yes。//一个数是......
  • C语言典型例题45
    《C程序设计教程(第四版)——谭浩强》习题3.5给一个不多于5位的正整数,要求:     1.求出它是几位数;     2.分别输出每一位数字;     3.按逆序输出各位数字,例如:原数为321,输出为123代码://《C程序设计教程(第四版)——谭浩强》//习题3.5给一......
  • C语言学习--排序和查找
    提示:排序和查找算法是算法领域中最基本的概念之一,它们在数据组织、优化查询效率等方面发挥着至关重要的作用。目录前言12.1排序算法的介绍12.2冒泡排序12.2.1基本介绍12.2.2冒泡排序应用实例12.2.3分析冒泡的过程+代码12.3查找12.3.1介绍12.3.2案例演示12......
  • C语言学习--断点调试
    提示:断点调试作为一种重要的调试技术,能够帮助程序员逐行分析代码的执行过程,查找潜在的Bug,并最终解决问题。目录前言13.1一个实际需求13.2断点调试介绍13.3断点调试的快捷键13.4断点调试应用案例113.5断点调试应用案例213.6断点调试应用案例313.7断点调试......
  • 嵌入式初学-C语言-二五
    构造类型   数据类型分类:基本类型:整数型短整型:short(2字节)整型:int(4个字节)长整型:long(8个字节)长长整型:longlong浮点型单精度:float(4个字节)双精度:double(8个字节)字符型:char(1个字节)指针类型数据类型*:int*,char*,float*等void*:任意数据类型指针空类型void......
  • c语言 小熊猫Dev cpp6.7.5版本bug
    问题描述:请看下面代码#include<stdio.h>#include<math.h>intmain(void){ intres=0; inti=2; res=pow(10,i); printf("%d",res); return0;}期望输出100,但是在pandaDevcpp6.7.5版本中会输出99在看下面的代码正确输出100#include<stdio.h>#include<ma......