C语言递归的一些总结

首先我们需要了解递归是什么

程序调用自身就叫做递归。

要进行递归的算法时 我们应该从以下几点进行考虑
1.首先去找临界值,即无需计算,获得的值。
2. 找这一次和上一次的关系
3. 假设当前函数已经可以使用,调用自身计算上一次和这一次的关系。

下面我们从一些简单的代码来对递归进行一些深入的了解!

1. 斐波那契数列的两种算法

#include<stdio.h>
#include<stdlib.h>
                   //斐波那契数列不同计算方法
//1,1,2,3,5,8
//递推
int fab1(int n)
{
	if (n==1||n==2)
	{
		return 1;
	}
	return fab1(n-1) + fab1(n-2);
}
//循环
int fab2(int n)
{
	int a;
	int s;
	int z;
	a = 1;
	s = 1;
	for (int i=2;i<n;i++)
	{
	
	if (n==2||n==1)
	{
		s = 1;
	} 
	else
	{
		z = a + s;//2
		a = s;//1
		s=z;//2 
	}
	}
	return s;
}
int main()
{
	int fab2(int n);
	int a = 0;
	a=fab2(6);
	printf("%d", a);
	system("pause");
	return 0;
}

2.求n^k的阶乘 如果k大于一的话 那么久进入 n(n,k-1) 的函数*

#include<stdio.h>
#include<stdlib.h>

//求n^k!    意思就是  k个n相乘   
// 思路 如果k大于一的话 那么久进入 n*(n,k-1) 的函数  

int mypow(int n, int k)
{                       //传进参数  n和k
	if (k == 1) 
	{                              //如果k等于1的时候就返回一个n;
		return n;
	}
	return n * mypow(n, k - 1);             //开始递归
}

//n^k  k个n相乘;
int com(int n, int k)
{
	int c = 0;
	if (k==1)
	{
		c=n;
	}
	c= n * com(n, k - 1);
	return c;
}
int main()
{

	int a = com(2, 4);
	printf("%d\n", a);
	system("pause");
	return 0;

}

3.将一个整数的每一位输出

#include<stdio.h>
#include<stdlib.h>
//思路   取模得到末位  对十取余得到除去末位其他位

int summ(int n)
{
	int sum = 0;

	if (n!=0)
	{
		int last = n % 10;
		int other = n / 10;
		sum = last + summ(n/10);
	}
	return sum;
}
int main()
{

	int summ(int n);
	int a = 90;
	printf("%d", summ(a));
	system("pause");
	return 0;
}

不论是什么语言,都是由循环 选择 递归等一些基础原知识来组成的
万丈高楼平地起!学好了这些才能在今后的学习中更加的游刃有余!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值