递归:在调用一个函数的过程中又出现直接或间接地调用该函数自己本身,称为函数的递归调用。
例7.1 有5个学生坐在一起
◆问第5个学生多少岁?他说比第4个学生大2岁
◆问第4个学生岁数,他说比第3个学生大2岁
◆问第3个学生,又说比第2个学生大2岁
◆问第2个学生,说比第1个学生大2岁
◆最后问第1个学生,他说是10岁
◆请问第5个学生多大?
第一种我们先用for循环来写:
1. 理清其中的关系,由题目可知: 第一个学生10岁,那么第二个学生就是12岁,以此类推第五个学生就是18岁。
#includeint Age1(int n) { int tmp = 10; //第一个学生的年龄为10岁 for(int i=1; i 调试结果为:
第二种我们用递归法来写:
其中的规律为:
Age(n):第n个学生的年龄 == Age(n-1)+2
Age(n-1):第n-1个学生的年龄==Age(n-1)
Age(1):第1个学生的年龄==10 这是递归的停步准则,如果n==1,tmp=10,然后把10依次带入每一个Age( )中,求出最后要的年龄。#includeint Age(int n) { int tmp; if(n == 1) { tmp = 10; } else { tmp = Age(n-1)+2; } return tmp; } int main() { for (int i = 1; i <= 5; i++) { printf("%dn", Age(i)); } return 0; } 调试结果为:
最不适用于用递归函数的经典题目:斐波那契数列
https://blog.csdn.net/hi332516_1/article/details/121554462



