我知道有关于这个主题的问题,但没有一个答案对我有帮助.我不需要实现代码的帮助,我只需要帮助整理递归过程.
我最初想的是递归地返回每个级别的元组并进行比较以找到第二个最小值.但这不起作用,因为我希望我的函数最终只返回1个值 - 第二个最小值.
我将如何处理此问题的递归过程?谢谢!
编辑:抱歉没有包含足够的详细信息,所以这里有.
功能应如下工作:
>>> sm([1,3,2,1,3,2])
>>> 2
Run Code Online (Sandbox Code Playgroud)
第二次编辑: 抱歉延迟,我一直忙到现在,终于能够坐下来把我的想法放到代码中了.它按预期工作,但老实说,我认为这是一种非常糟糕和低效的递归方式,因为你可能会说我是这个概念的新手.
使用下面的伪代码重新解释我的原始问题:是否有可能做我在这里做的,但没有将它包装在第二个函数中?也就是说,是否有可能只有递归调用自身的函数,并返回1个数字 - 第二个最小的数字?
def second_smallest(list):
def sm(list):
if base case(len of list == 2):
return ordered list [2nd smallest, smallest]
else:
*recursive call here*
compare list[0] with returned ordered list
eg: [3, [5,2]]
re-arrange, and return a new ordered list
[3,2]
return sm(list)[0]
Run Code Online (Sandbox Code Playgroud) 我正在学习python中的递归,我有这个代码:
def search(l,key):
"""
locates key in list l. if present, returns location as an index;
else returns False.
PRE: l is a list.
POST: l is unchanged; returns i such that l[i] == key; False otherwise.
"""
if l: # checks if list exists
if l[0] == key: # base case - first index is key
return True
s = search(l[1:], key) # recursion
if s is not False:
return s
return False # returns false if key not …Run Code Online (Sandbox Code Playgroud) 我是汇编语言的新手,我对乘法感到非常困惑。
它说我使用后mult $t0, $t1结果存储在 Hi 和 Lo 中,我知道这些是特殊寄存器mult和div的特殊寄存器,但如何访问它们?
假设我在mult $t0, $t1where$t0和$t1都是 2。我如何得到结果?(4)
给定一个嵌套列表L(这样L的每个元素都是一个整数,或者一个列表,它本身可能包含整数或列表,可能反过来等等)返回True是在L.
search([1, [2, 3], 4, [5, [6 , [], [8, 9]], 10]], 8)
Run Code Online (Sandbox Code Playgroud)
应该返回True.
这是我到目前为止:
def search (L,s):
"""(list, anytype) _> Bool
Returns true iff s is present in L
"""
if L:
if L[0] == s:
return True
else:
return search (L[1:], s)
else:
return False
Run Code Online (Sandbox Code Playgroud)
如果它没有嵌套,或者它是嵌套的,那么这个当前代码适用于列表(嵌套元素是最后一个元素):
[1, 2, 3, [4, 5]]
Run Code Online (Sandbox Code Playgroud)
但不适用于以下情况:
[1, 2, [3, 4], 5]
Run Code Online (Sandbox Code Playgroud)
如何更改我的代码以使其适用于嵌套列表?嵌套元素在列表中的任何位置并不严格地说是最后一个元素?
感谢任何帮助!
编辑:对不起,忘了指定它需要递归.
我如何创建一个创建数组的循环,如下所示:
aa
ab
ac
ad
Run Code Online (Sandbox Code Playgroud)
我正在考虑制作一个循环遍历az的循环,然后另一个嵌套在循环中通过az循环,这是正确的方法吗?如果是,我该如何实施呢?
我经历了一些问题,但找不到真正有用的问题.
可以说我有一个对象列表
[[Cheese(3), Cheese(2), Cheese(1)], []]
Run Code Online (Sandbox Code Playgroud)
我需要编写一个函数,在那里找到Cheese(1)的索引
我试过这个:
def location (search):
return self.list.index(Cheese(1))
Run Code Online (Sandbox Code Playgroud)
哪个没用,我想list.index(search)在列表中返回搜索项目的索引?
对于上面的列表,索引应该是干酪(1)的列表[0] [2]
我不确定为什么下面的代码不起作用.
我尝试用gcc编译它gcc -Wall -o test test.c,它给出了警告信息:控制到达非void函数的结束.
但是我找不到错误所以我试图编译它忽略警告消息,并在使用./test 1234321编译后使用它来测试程序gcc -o test ispalidrome.c
但不是返回0(它应该由我理解,因为它没有触发任何if语句返回1),它返回一个随机值,46,52,84等.
该程序背后的主要逻辑完全按照要求,我只是不知道为什么它没有正确退出.
#include <stdio.h>
int main(int argc, char **argv){
if (argc != 2){
fprintf(stderr, "Usage: %s \"string\"", argv[0]);
return 1;
}
else{
int i = 0;
while( '\0' != argv[1][i] ) i++;
char *start=argv[1];
char *end=&start[i-1];
while (start<end){
if (*start != *end){
break;
return 1;
}
printf("%c is the same as %c\n",*start, *end);
start =start+1;
end=end-1;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我是C的新手,有几个基本问题; 我阅读了一些教程并查看了几个问题,但由于一些措辞,我仍然有点困惑.
#include <stdio.h>
int main(int argc, char **argv){
printf("%s",argv[1]);
}
Run Code Online (Sandbox Code Playgroud)
让我们说我编译并运行该文件: ./test blah blah
据我所知,argv[1]指向一个指针blah; 如果我需要访问这些字母,我该怎么办呢?
我试过了printf("%s\n", argv[1][1]),char *pointer = argv[1]但都没有奏效.
我误解了一个概念吗?或者我没有让编码部分正确.