def recursivelog(n, x, b, l=None, u=None):
assert( n >= 0)
assert( x >= 1)
assert( isinstance(b, int) )
assert( b >= 2 )
float(x)
if(x<b):
return 0
else:
return 1+ recursivelog(n-1,x/b,b)

3个回答

public static double loga1(int level, double a, double n) {
if (a <= 0 || n <= 0)
return Double.NaN;
if (level > 500)
return 1;
if (a == 1) {
return Double.NaN;
} else if (a > 1) {
if (n > a) {
return 1 + loga1(level + 1, a, n/a);
} else if (n == a) {
return 1;
} else { //n < a
return 1 / loga1(level + 1, n, a);
}
} else { //a < 1
return -loga1(level + 1, 1/a, n);
}
}

`````` double MYLOG(double a)
{
int N = 15;//我们取了前15+1项来估算
int k,nk;
double x,xx,y;
x = (a-1)/(a+1);
xx = x*x;
nk = 2*N+1;
y = 1.0/nk;
for(k=N;k>0;k--)
{
nk = nk - 2;
y = 1.0/nk+xx*y;

}
return 2.0*x*y;

}

https://blog.csdn.net/mike190267481/article/details/7404702
``````

`````` double foo(int k, int nk, double y)
{
if (k == 0) return 1.0/nk+xx*y;
return foo(k-1, nk - 2;  1.0/nk+xx*y);
}
double MYLOG(double a)
{
int N = 15;//我们取了前15+1项来估算
int k,nk;
double x,xx,y;
x = (a-1)/(a+1);
xx = x*x;
nk = 2*N+1;
y = 1.0/nk;
y=foo(N, nk, y);
return 2.0*x*y;

}

``````

python递归的无法返回或者达到某一条件终止并return

``` class Solution: def canJump(self, nums): if len(nums) == 0: return False def DFS(nums): if len(nums) == 1: return True for i in range(1,nums[0]+1): DFS(nums[i:]) if DFS(nums) is False: print('1111') return True elif DFS(nums) is None: print('2222') return False S =Solution() S.canJump([2,0,0]) ``` 两个问题：1为什么我DFS函数没有返回TRUE ，返回的是None 2如果按照网上的方法在 DFS(nums[i:]) 前加上return 为什么我的i不会循环到2这个值，只能是1就停止了？

python 递归函数的执行时间怎么处理

''' 代码 ''' import time import random myList=[] count=0 def decorate(function): def inner(*args): start=time.time() function(*args) end=time.time() print(end-start) return function return inner def QuickSort(myList,start,end): if start<end: i,j=start,end base=myList[i] while i<j: while(i<j) and (myList[j]>=base): j=j-1 myList[i]=myList[j] while(i<j) and (myList[i]<=base): i=i+1 myList[j]=myList[i] print(myList) myList[i]=base QuickSort(myList,start,i-1) QuickSort(myList,j+1,end) return myList for num in range(0,1000): myList.append(random.randint(0,1000)) myList=random.sample(myList,5) @decorate def quick(): QuickSort(myList,0,len(myList)-1) #myList.sort() quick() ''' 结果 ![图片说明](https://img-ask.csdn.net/upload/201811/05/1541384222_689705.png) ''' ''' 提问：为什么快速排序的算法速度会比python自带的sort()执行的时间慢，而且慢的很多？ '''

Java中递归快还是循环快？

Java中递归快还是循环快？ 还是有什么适用情况？ 例如求100万的阶乘

python递归 return 问题

``` class Solution: def canJump(self, nums): if len(nums) == 0: return False def DFS(nums): if len(nums) == 1: return True for i in range(1,nums[0]+1): return DFS(nums[i:]) #上面这两行代码如果改成 return DFS(nums[1:]、 DFS(nums[2:]......)则可以运行，但是引入for循环后，return就变为None) S =Solution() S.canJump([2,0,0]) ``` 想知道怎么解决？卡了我好久

[JAVA]for循环换成递归有没有什么套路？反之呢？

python的汉诺塔递归算法

PHP中，怎么用递归计算出一个数组中所有元素的和？

PHP中，怎么用递归计算出一个数组中所有元素的和？ PHP中，怎么用递归计算出一个数组中所有元素的和？ PHP中，怎么用递归计算出一个数组中所有元素的和？

java递归问题，求助 很着急

Java局部变量全局变量递归问题

![图片说明](https://img-ask.csdn.net/upload/201612/03/1480762685_802349.png) 先说明一下 代码求的是一个文件夹的大小 _****写法1：用全局变量 不对 写法2 ：用局部变量 对****_ 为什么？最好能解释的详细一点 ``` import java.io.File; import java.util.Scanner; public class Directory{ public static void main(String []args){ System.out.println("Enter a directory of file ") ; Scanner input = new Scanner (System.in); String directory = input.nextLine(); System.out.println(getSize(new File(directory)) + "bytes"); } public static long getSize(File file ){ long size = 0; if (file.isDirectory()){ File[]files = file.listFiles(); for (int i =0;files != null && i<files.length; i++) size+=getSize(files[i]); } else size +=file.length(); return size; } } ```

Problem Description Marry likes to count the number of ways to choose two non-negative integers a and b less than m to make a×b mod m≠0. Let's denote f(m) as the number of ways to choose two non-negative integers a and b less than m to make a×b mod m≠0. She has calculated a lot of f(m) for different m, and now she is interested in another function g(n)=∑m|nf(m). For example, g(6)=f(1)+f(2)+f(3)+f(6)=0+1+4+21=26. She needs you to double check the answer. ![图片说明](http://acm.hdu.edu.cn/data/images/C646-1002-1.jpg) Give you n. Your task is to find g(n) modulo 264. Input The first line contains an integer T indicating the total number of test cases. Each test case is a line with a positive integer n. 1≤T≤20000 1≤n≤109 Output For each test case, print one integer s, representing g(n) modulo 264. Sample Input 2 6 514 Sample Output 26 328194

npython（numpy）中，怎么正确使用递归？

java递归查询算法。。。

![图片说明](https://img-ask.csdn.net/upload/201904/28/1556436865_360366.png)![图片说明](https://img-ask.csdn.net/upload/201904/28/1556436872_160599.png)![图片说明](https://img-ask.csdn.net/upload/201904/28/1556436878_13759.png) 做到了这个样子，怎样能依次输出所有值，而不是只有最后留下来那个数字，求大神帮忙 指点，改改代码。 class HW0426 { public int joserphRing(int a, int b) { int n = 0; if(a == 0){ n = n + a; return n; } else{ n = (joserphRing(a-1, b) + b)%a; } return n; } } import java.util.Scanner; public class TestHW0426 { public static void main(String[] args) { int total = 0, step = 0; Scanner scanner = new Scanner(System.in); System.out.print("请输入总人数:"); total = scanner.nextInt(); System.out.print("请输入步长值："); step = scanner.nextInt(); HW0426 j1 = new HW0426(); System.out.print(j1.joserphRing(total,step)+1); } }

names=['john', 'eric', ['cleese','idle'],'micheal'] print_lol(names,0) 对于上面这样一个简单的双重列表，用下面的函数显示它，函数中的参数level值是怎么变化的？按书上的结果就是0 1 0 ，我不理解的是什么时候又从1变到0的？ def print_lol(the_list,level)        for each_item in the_list:        if isinstance(each_item,list):               print_lol(each_item,level+1)        else:               for tab_stop in range(level):                     print("\t",end='')               print(each_item)

ema其公式为：（[[或参考百度百科](https://baike.baidu.com/item/EMA/12646151?fr=aladdin "")](https://baike.baidu.com/item/EMA/12646151?fr=aladdin "")） EMAtoday=α * Pricetoday + ( 1 - α ) * EMAyesterday; 其中，α为平滑指数，一般取作2/(N+1)。在计算MACD指标时，EMA计算中的N一般选取12和26天，因此α相应为2/13和2/27。 当公式不断递归，直至EMA1出现，EMA1是没有定义的。EMA1 的取值有几种不同的方法，通常情况下取EMA1为Price1，另外有的技术是将EMA1取值为开头4到5个数值的均值。 在计算机递推计算时，可以写作： EMAtoday=α * ( Pricetoday - EMAyesterday ) + EMAyesterday; 在使用过程中Price不是一次性给出，而是通过循环，比如今天提供一个Price明天提供新的Price 调用形式最好是：ema（N,Price） 使用方式如下：（正式使用是通过整个大程序循环，因此ema（）的参数不能写在循环之外，不知道用什么办法在其他地方引用过来以及保存计算的中间值） import random i=0 while 1<30: a=random() 此处计算a的移动平均值ema print(ema)

Java递归，查询与搜索相关的全部的数据

MySQL数据库面试题（2020最新版）

2020阿里全球数学大赛：3万名高手、4道题、2天2夜未交卷

HashMap底层实现原理，红黑树，B+树，B树的结构原理 Spring的AOP和IOC是什么？它们常见的使用场景有哪些？Spring事务，事务的属性，传播行为，数据库隔离级别 Spring和SpringMVC，MyBatis以及SpringBoot的注解分别有哪些？SpringMVC的工作原理，SpringBoot框架的优点，MyBatis框架的优点 SpringCould组件有哪些，他们...

《Oracle Java SE编程自学与面试指南》最佳学习路线图2020年最新版（进大厂必备）

《Oracle Java SE编程自学与面试指南》最佳学习路线图（2020最新版）