欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于递归的简单理解

程序员文章站 2024-02-27 12:32:33
...

关于递归的简单理解

								——人理解迭代,上帝理解递归

打印一个正整数是递归入门的经典程序之一,请看代码:
(函数中辅助打印了每一层递归调用时参数的值)

/* 打印正整数N*/
#include<stdio.h>
void reverse(unsigned int N);

int main()
{
	int n;
	printf("请输入一个数字N:\n");
	scanf(" %d", &n);
	printf("\n");
	reverse(n);

	return 0;
}

void reverse(unsigned int N)
{
	if(N >= 10){
		printf("%d第一次\n", N);
		reverse(N / 10);
		printf("%d再一次\n", N);
	}
	printf("%d\n", N%10);
}

下图是运行结果:
关于递归的简单理解
理解基础:
一、递归的每层调用生成的值,都只属于当层所有。
二、如果需要打印一个正整数,如1234,可以先打印123,再打印4。打印4很容易完成,但是打印123与打印1234的难度从理论上是相同的,所以可以看作同一个问题。因此可以再用上面的方法,把问题看作是打印12和3,层层递进,化繁为简,直至基准,可称递归。

程序运行:
当输入一个数(3975)后,如果该数是大于判定的基础条件(>10),则进入下一次递归(3975—>397—>39—>3),依次到达递归的基本操作(基准情形)(3%10=3)。在完成一次基本操作后,返回上一次调用,参数还原为上一次调用的值(3—>39—>397—>3975;关于C语言求余运算:39%10=9, 397%10=7,3975%10=5),按照调用顺序依次原路返回,程序结束。

END