标签: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