标签:names 程序 结果 定义 std 函数 问题: iostream div
怎样用递归方法解决问题
问题:
遇到的问题
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也是正确的,因此依次类推后面的都是正确的
这就是从后往前推的方法
标签:names 程序 结果 定义 std 函数 问题: iostream div
原文地址:https://www.cnblogs.com/ldddbk/p/9058377.html