c++中递归方法问题

怎样用递归方法解决问题

问题:

  1. 用一个递归函数计算用户输入的n值的阶乘,并进行输出。

遇到的问题

1、递归理解不够深,首先要想到在满足什么条件下用递归,在满足什么条件下递归结束并接返回一个值。

2、最重要的就是递归的逻辑,比如以下代码

// 实验九(1).cpp: 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
using namespace std;

int factorial(int n)
{

	int f=1;

	if (n > 1)
	{
		f = factorial(n - 1)*n;
	}
	else
		return f;
}

int main()
{
	int n;
	cin >> n;
	cout << factorial(n);
	return 0;
}

  看似在每一次递归的时候都会给f重新赋值1,然后感觉计算出来的结果不正确,但是其实逻辑是这样子的,

当n=1时不满足进行递归的条件,返回值为1,结果正确

当n=2时满足条件但是不进行递归只运行一次使得返回值为2,结果正确

当n=3的时候递归一次也就是说f = factorial(2)*3;又因为 factorial(2)=2所以最后结果为6也是正确的,因此依次类推后面的都是正确的

这就是从后往前推的方法

猜你喜欢

转载自www.cnblogs.com/ldddbk/p/9058377.html
今日推荐